luoguangyi 3 лет назад
Сommit
29695cacef
100 измененных файлов с 11876 добавлено и 0 удалено
  1. 2 0
      .gitattributes
  2. 58 0
      .gitignore
  3. 13 0
      etc/Saas版调研上传_svn471.txt
  4. BIN
      etc/抄表接口post说明compute-engine-webapp.doc
  5. BIN
      etc/抄表接口说明compute-engine-webapp.doc
  6. 10 0
      etc/拆分公式.txt
  7. BIN
      etc/接口说明compute-engine-webapp.doc
  8. BIN
      etc/数据查询接口说明.doc
  9. BIN
      etc/租户能耗与费用计算.doc
  10. BIN
      etc/配置compute-engine-webapp.doc
  11. BIN
      etc/配置compute-engine-webapp_svn1022.doc
  12. 210 0
      pom.xml
  13. 15 0
      src/main/java/com/ComputeEngineWebApplication.java
  14. 905 0
      src/main/java/com/pbsage/parser/emsiv/EMSLexer.java
  15. 648 0
      src/main/java/com/pbsage/parser/emsiv/EMSParser.java
  16. 330 0
      src/main/java/com/pbsage/parser/emsiv/EMSScanner.java
  17. 345 0
      src/main/java/com/pbsage/parser/emsiv/EMSWalker.java
  18. 34 0
      src/main/java/com/pbsage/parser/emsiv/FunctionUtil.java
  19. 44 0
      src/main/java/com/persagy/entity/EntityDynamicData.java
  20. 34 0
      src/main/java/com/persagy/entity/EntityDynamicDataArray.java
  21. 53 0
      src/main/java/com/persagy/entity/EntitySimple.java
  22. 107 0
      src/main/java/com/persagy/entity/WSBatchItem.java
  23. 61 0
      src/main/java/com/persagy/entity/WSBatchParam.java
  24. 62 0
      src/main/java/com/persagy/entity/WSBuildingData.java
  25. 61 0
      src/main/java/com/persagy/entity/WSData.java
  26. 52 0
      src/main/java/com/persagy/entity/WSData_fjd_1.java
  27. 61 0
      src/main/java/com/persagy/entity/WSData_fjd_2.java
  28. 81 0
      src/main/java/com/persagy/entity/WSEntity_change.java
  29. 44 0
      src/main/java/com/persagy/entity/WSEntity_changes.java
  30. 63 0
      src/main/java/com/persagy/entity/WSEntity_ci_status.java
  31. 70 0
      src/main/java/com/persagy/entity/WSEntity_data.java
  32. 63 0
      src/main/java/com/persagy/entity/WSEntity_datas.java
  33. 44 0
      src/main/java/com/persagy/entity/WSEntity_datas_batch.java
  34. 90 0
      src/main/java/com/persagy/entity/WSEntity_fjd_1.java
  35. 163 0
      src/main/java/com/persagy/entity/WSEntity_point.java
  36. 45 0
      src/main/java/com/persagy/entity/WSEntity_points.java
  37. 98 0
      src/main/java/com/persagy/entity/WSEntity_report.java
  38. 44 0
      src/main/java/com/persagy/entity/WSEntity_report_batch.java
  39. 89 0
      src/main/java/com/persagy/entity/WSEntity_report_change.java
  40. 71 0
      src/main/java/com/persagy/entity/WSEntity_report_get_batch_param.java
  41. 71 0
      src/main/java/com/persagy/entity/WSEntity_report_get_param.java
  42. 82 0
      src/main/java/com/persagy/entity/WSEntity_tenant.java
  43. 82 0
      src/main/java/com/persagy/entity/WSEntity_tenant_energy.java
  44. 62 0
      src/main/java/com/persagy/entity/WSEntity_tenant_energy_meter.java
  45. 45 0
      src/main/java/com/persagy/entity/WSEntity_tenants.java
  46. 44 0
      src/main/java/com/persagy/entity/WSFlag.java
  47. 200 0
      src/main/java/com/persagy/entity/WSParam.java
  48. 81 0
      src/main/java/com/persagy/entity/WSPoint.java
  49. 9 0
      src/main/java/com/persagy/service/CalculateUnit_tmp.java
  50. 16 0
      src/main/java/com/persagy/service/EnergyItem_tmp.java
  51. 12 0
      src/main/java/com/persagy/service/EnergyModel_tmp.java
  52. 322 0
      src/main/java/com/persagy/service/IService1.java
  53. 228 0
      src/main/java/com/persagy/service/IService1.java.post
  54. 29 0
      src/main/java/com/persagy/service/IService2.java
  55. 28 0
      src/main/java/com/persagy/service/IService2.java.post
  56. 70 0
      src/main/java/com/persagy/service/IServiceDynamicData.java
  57. 79 0
      src/main/java/com/persagy/service/IServiceTenant.java
  58. 124 0
      src/main/java/com/persagy/service/ServiceDynamicDataImpl.java
  59. 373 0
      src/main/java/com/persagy/service/ServiceImpl1.java
  60. 225 0
      src/main/java/com/persagy/service/ServiceImpl1.java.post
  61. 70 0
      src/main/java/com/persagy/service/ServiceImpl2.java
  62. 72 0
      src/main/java/com/persagy/service/ServiceImpl2.java.post
  63. 86 0
      src/main/java/com/persagy/service/ServiceTenant.java
  64. 309 0
      src/main/java/com/persagy/service/ServiceTenantUtil.java
  65. 1196 0
      src/main/java/com/persagy/service/ServiceUtil.java
  66. 210 0
      src/main/java/com/persagy/service/ServiceUtil2.java
  67. 637 0
      src/main/java/com/persagy/service/SurveyUtil.java
  68. 729 0
      src/main/java/com/persagy/service/SurveyUtil2.java
  69. 58 0
      src/main/java/com/persagy/util/ConstantAgent.java
  70. 187 0
      src/main/java/com/persagy/util/ConstantWeb.java
  71. 92 0
      src/main/java/com/persagy/util/DynamicDataUtil.java
  72. 409 0
      src/main/java/com/persagy/util/QueryUtil.java
  73. 19 0
      src/main/java/com/persagy/util/ReportRecompute.java
  74. 18 0
      src/main/java/com/persagy/util/ReportRecomputeItem.java
  75. 119 0
      src/main/java/com/persagy/util/RestUtil.java
  76. 28 0
      src/main/java/com/persagy/util/SyncUtil.java
  77. 93 0
      src/main/java/com/persagy/util/TableUtil.java
  78. 87 0
      src/main/java/com/persagy/util/ZillionAgentUtil.java
  79. 37 0
      src/main/java/com/persagy/util/ZooKeeperUtil.java
  80. 70 0
      src/main/java/com/persagy/wsentity/SBuilding.java
  81. 72 0
      src/main/java/com/persagy/wsentity/SBuildingConfig.java
  82. 61 0
      src/main/java/com/persagy/wsentity/SBuildingConfigUse.java
  83. 53 0
      src/main/java/com/persagy/wsentity/SComputeUnit.java
  84. 43 0
      src/main/java/com/persagy/wsentity/SEnergyModel.java
  85. 43 0
      src/main/java/com/persagy/wsentity/SEnergyModelExpression.java
  86. 52 0
      src/main/java/com/persagy/wsentity/SEnergyModelNode.java
  87. 53 0
      src/main/java/com/persagy/wsentity/SMeter.java
  88. 80 0
      src/main/java/com/persagy/wsentity/SResearchNode.java
  89. 52 0
      src/main/java/com/persagy/wsentity/SSurvey.java
  90. 44 0
      src/main/java/com/persagy/wsentity/SSurveyResult.java
  91. 53 0
      src/main/java/com/persagy/wsentity/SSurveyResultItem.java
  92. 52 0
      src/main/java/com/persagy/wsentity2/TBranch.java
  93. 53 0
      src/main/java/com/persagy/wsentity2/TCalculateUnit.java
  94. 43 0
      src/main/java/com/persagy/wsentity2/TCalculateUnit2EnergyItem.java
  95. 62 0
      src/main/java/com/persagy/wsentity2/TConfigUse.java
  96. 98 0
      src/main/java/com/persagy/wsentity2/TConfigUseItem.java
  97. 43 0
      src/main/java/com/persagy/wsentity2/TDefaultFunctionId.java
  98. 70 0
      src/main/java/com/persagy/wsentity2/TEnergyItem.java
  99. 71 0
      src/main/java/com/persagy/wsentity2/TEnergyModel.java
  100. 0 0
      src/main/java/com/persagy/wsentity2/TMeter.java

+ 2 - 0
.gitattributes

@@ -0,0 +1,2 @@
+    # Declare files that will always have UNIX line endings on checkout.
+*.sh text eol=lf

+ 58 - 0
.gitignore

@@ -0,0 +1,58 @@
+HELP.md
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**
+!**/src/test/**
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+.settings/
+.gradle/
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+
+### VS Code ###
+.vscode/
+
+### JRebel ###
+rebel.xml
+rebel-remote.xml
+
+### Others ###
+*.log
+*/log
+hs_err_pid*
+
+# Package Files #
+*.jar
+*.war
+*.ear
+*.zip
+*.tar.gz
+*.rar
+*.swp
+*.log
+*.ctxt
+
+
+spring-cloud-alibaba-examples/
+iot-admin-server/
+cloud/nacos/

+ 13 - 0
etc/Saas版调研上传_svn471.txt

@@ -0,0 +1,13 @@
+1	调研中增加pointArray,用于存储通信拓扑结构
+2	pointArray的结构有以下列:
+	sign			表号
+	funcid		功能号
+	dataType	Acc/Inst
+	timeType	15min
+	system		EMS
+	source		collector
+	address_1		网关号
+	address_2		总线号
+	address_3		端口号
+	address_4		
+3	支路结构中增加parentSign,表示上级支路编号,需要给出完整的支路结构

BIN
etc/抄表接口post说明compute-engine-webapp.doc


BIN
etc/抄表接口说明compute-engine-webapp.doc


+ 10 - 0
etc/拆分公式.txt

@@ -0,0 +1,10 @@
+if([meterdata_9001_20201<=0.1] && [meterdata_9002_20201>0.1]){
+0.0
+}elseif([meterdata_9001_20201<=0.1] && [meterdata_9002_20201<=0.1]){
+energydata_1101060003001_101_10101/2.0
+}elseif([meterdata_9001_20201>0.1] && [meterdata_9002_20201>0.1]){
+energydata_1101060003001_101_10101*meterdata_9001_20202/(meterdata_9001_20202+meterdata_9002_20201)
+}else{
+energydata_1101060003001_101_10101
+}
+$

BIN
etc/接口说明compute-engine-webapp.doc


BIN
etc/数据查询接口说明.doc


BIN
etc/租户能耗与费用计算.doc


BIN
etc/配置compute-engine-webapp.doc


BIN
etc/配置compute-engine-webapp_svn1022.doc


+ 210 - 0
pom.xml

@@ -0,0 +1,210 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>2.3.12.RELEASE</version>
+        <relativePath/>
+    </parent>
+    <groupId>com.sagacloud.util</groupId>
+    <artifactId>compute-engine-webapp</artifactId>
+    <packaging>jar</packaging>
+    <version>2.3.3.341</version>
+    <name>compute-engine-webapp</name>
+    <properties>
+        <!-- Maven 相关 -->
+        <java.version>1.8</java.version>
+        <maven.compiler.source>${java.version}</maven.compiler.source>
+        <maven.compiler.target>${java.version}</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+        <spring-boot.version>2.3.12.RELEASE</spring-boot.version>
+        <jaxen.version>1.2.0</jaxen.version>
+        <dom4j.version>2.1.3</dom4j.version>
+        <lombok.version>1.18.22</lombok.version>
+        <mapstruct.version>1.4.1.Final</mapstruct.version>
+        <hutool.version>5.7.19</hutool.version>
+        <antlr.runtime.version>3.1</antlr.runtime.version>
+        <zillion.util.version>2.3.3.341</zillion.util.version>
+        <compute-engine.version>2.3.3.342</compute-engine.version>
+        <!--日志框架有安全漏洞,升级最新版本-->
+        <logback.version>1.2.9</logback.version>
+        <log4j2.version>2.17.0</log4j2.version>
+        <log4j.version>1.3.8.RELEASE</log4j.version>
+        <xstream.version>1.4.18</xstream.version>
+        <easyexcel.version>3.0.5</easyexcel.version>
+
+        <!-- Maven Plugin Versions -->
+        <spring-boot-maven-plugin.version>2.3.12.RELEASE</spring-boot-maven-plugin.version>
+        <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
+        <maven-deploy-plugin.version>2.8.2</maven-deploy-plugin.version>
+        <maven-surefire-plugin.version>3.0.0-M5</maven-surefire-plugin.version>
+        <maven-source-plugin.version>3.2.1</maven-source-plugin.version>
+        <maven-javadoc-plugin.version>3.2.0</maven-javadoc-plugin.version>
+        <maven-resources-plugin.version>3.2.0</maven-resources-plugin.version>
+    </properties>
+
+
+    <dependencies>
+        <!-- Web 相关 -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.dom4j</groupId>
+            <artifactId>dom4j</artifactId>
+            <version>${dom4j.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>jaxen</groupId>
+            <artifactId>jaxen</artifactId>
+            <version>${jaxen.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+            <version>${hutool.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.antlr</groupId>
+            <artifactId>antlr-runtime</artifactId>
+            <version>${antlr.runtime.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>${lombok.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-log4j</artifactId>
+            <version>${log4j.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.sagacloud</groupId>
+            <artifactId>zillion-util</artifactId>
+            <version>${zillion.util.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-rt-frontend-jaxrs</artifactId>
+            <version>2.7.18</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-rt-frontend-jaxws</artifactId>
+            <version>2.7.18</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-rt-rs-extension-providers</artifactId>
+            <version>2.7.18</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-rt-databinding-aegis</artifactId>
+            <version>2.7.18</version>
+        </dependency>
+    </dependencies>
+
+
+
+    <repositories>
+        <repository>
+            <id>SagaCloud</id>
+            <name>SagaCloud</name>
+            <url>http://47.93.33.207:8082/repository/SagaCloud/</url>
+            <snapshots>
+                <enabled>true</enabled>
+            </snapshots>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+        </repository>
+        <repository>
+            <id>alimaven</id>
+            <name>aliyun maven</name>
+            <url>https://maven.aliyun.com/repository/public</url>
+        </repository>
+    </repositories>
+    <distributionManagement>
+        <repository>
+            <id>SagaCloudRelease</id>
+            <name>User Project Release</name>
+            <url>http://47.93.33.207:8082/repository/SagaCloudRelease/</url>
+        </repository>
+        <snapshotRepository>
+            <id>SagaCloudRelease</id>
+            <name>User Project SNAPSHOTS</name>
+            <url>http://47.93.33.207:8082/repository/SagaCloudSnapshot/</url>
+        </snapshotRepository>
+    </distributionManagement>
+
+    <build>
+        <finalName>${project.artifactId}</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.8.1</version>
+                <configuration>
+                    <source>1.8</source>
+                    <target>1.8</target>
+                    <encoding>UTF-8</encoding>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <version>${spring-boot.version}</version>
+            </plugin>
+<!--            <plugin>-->
+<!--                <groupId>org.apache.maven.plugins</groupId>-->
+<!--                <artifactId>maven-source-plugin</artifactId>-->
+<!--                <version>${maven-source-plugin.version}</version>-->
+<!--                <configuration>-->
+<!--                    <attach>true</attach>-->
+<!--                </configuration>-->
+<!--                <executions>-->
+<!--                    <execution>-->
+<!--                        <phase>compile</phase>-->
+<!--                        <goals>-->
+<!--                            <goal>jar</goal>-->
+<!--                        </goals>-->
+<!--                    </execution>-->
+<!--                </executions>-->
+<!--            </plugin>-->
+            <!--拷贝资源文件 copy-resources-->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-resources-plugin</artifactId>
+                <version>${maven-resources-plugin.version}</version>
+                <executions>
+                    <execution>
+                        <id>copy-resources</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals>
+                        <configuration>
+                            <resources>
+                                <resource>
+                                    <directory>src/main/resources/</directory>
+                                    <includes>
+                                        <include>*.properties</include>
+                                        <include>*.yml</include>
+                                        <include>*.conf</include>
+                                        <include>*.xml</include>
+                                    </includes>
+                                </resource>
+                            </resources>
+                            <outputDirectory>${project.build.directory}/config</outputDirectory>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>

+ 15 - 0
src/main/java/com/ComputeEngineWebApplication.java

@@ -0,0 +1,15 @@
+package com;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.ServletComponentScan;
+
+@SpringBootApplication
+@ServletComponentScan
+public class ComputeEngineWebApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(ComputeEngineWebApplication.class, args);
+    }
+
+}

+ 905 - 0
src/main/java/com/pbsage/parser/emsiv/EMSLexer.java

@@ -0,0 +1,905 @@
+// $ANTLR 3.1 ..\\antlrEMSIV\\src\\EMS.g 2015-12-04 17:45:01
+
+package com.pbsage.parser.emsiv;
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+
+public class EMSLexer extends Lexer {
+    public static final int T__15=15;
+    public static final int NEWLINE=4;
+    public static final int T__12=12;
+    public static final int T__11=11;
+    public static final int T__14=14;
+    public static final int T__13=13;
+    public static final int T__10=10;
+    public static final int NUMBER=5;
+    public static final int F1=7;
+    public static final int F2=8;
+    public static final int ID=6;
+    public static final int EOF=-1;
+    public static final int T__9=9;
+
+    // delegates
+    // delegators
+
+    public EMSLexer() {;} 
+    public EMSLexer(CharStream input) {
+        this(input, new RecognizerSharedState());
+    }
+    public EMSLexer(CharStream input, RecognizerSharedState state) {
+        super(input,state);
+
+    }
+    public String getGrammarFileName() { return "..\\antlrEMSIV\\src\\EMS.g"; }
+
+    // $ANTLR start "T__9"
+    public final void mT__9() throws RecognitionException {
+        try {
+            int _type = T__9;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ..\\antlrEMSIV\\src\\EMS.g:7:6: ( '+' )
+            // ..\\antlrEMSIV\\src\\EMS.g:7:8: '+'
+            {
+            match('+'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__9"
+
+    // $ANTLR start "T__10"
+    public final void mT__10() throws RecognitionException {
+        try {
+            int _type = T__10;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ..\\antlrEMSIV\\src\\EMS.g:8:7: ( '-' )
+            // ..\\antlrEMSIV\\src\\EMS.g:8:9: '-'
+            {
+            match('-'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__10"
+
+    // $ANTLR start "T__11"
+    public final void mT__11() throws RecognitionException {
+        try {
+            int _type = T__11;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ..\\antlrEMSIV\\src\\EMS.g:9:7: ( '*' )
+            // ..\\antlrEMSIV\\src\\EMS.g:9:9: '*'
+            {
+            match('*'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__11"
+
+    // $ANTLR start "T__12"
+    public final void mT__12() throws RecognitionException {
+        try {
+            int _type = T__12;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ..\\antlrEMSIV\\src\\EMS.g:10:7: ( '/' )
+            // ..\\antlrEMSIV\\src\\EMS.g:10:9: '/'
+            {
+            match('/'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__12"
+
+    // $ANTLR start "T__13"
+    public final void mT__13() throws RecognitionException {
+        try {
+            int _type = T__13;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ..\\antlrEMSIV\\src\\EMS.g:11:7: ( '(' )
+            // ..\\antlrEMSIV\\src\\EMS.g:11:9: '('
+            {
+            match('('); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__13"
+
+    // $ANTLR start "T__14"
+    public final void mT__14() throws RecognitionException {
+        try {
+            int _type = T__14;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ..\\antlrEMSIV\\src\\EMS.g:12:7: ( ')' )
+            // ..\\antlrEMSIV\\src\\EMS.g:12:9: ')'
+            {
+            match(')'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__14"
+
+    // $ANTLR start "T__15"
+    public final void mT__15() throws RecognitionException {
+        try {
+            int _type = T__15;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ..\\antlrEMSIV\\src\\EMS.g:13:7: ( ',' )
+            // ..\\antlrEMSIV\\src\\EMS.g:13:9: ','
+            {
+            match(','); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__15"
+
+    // $ANTLR start "F1"
+    public final void mF1() throws RecognitionException {
+        try {
+            int _type = F1;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ..\\antlrEMSIV\\src\\EMS.g:40:4: ( ( 'abs' | 'sin' | 'cos' | 'tan' | 'asin' | 'acos' | 'atan' | 'ceil' ) )
+            // ..\\antlrEMSIV\\src\\EMS.g:40:6: ( 'abs' | 'sin' | 'cos' | 'tan' | 'asin' | 'acos' | 'atan' | 'ceil' )
+            {
+            // ..\\antlrEMSIV\\src\\EMS.g:40:6: ( 'abs' | 'sin' | 'cos' | 'tan' | 'asin' | 'acos' | 'atan' | 'ceil' )
+            int alt1=8;
+            alt1 = dfa1.predict(input);
+            switch (alt1) {
+                case 1 :
+                    // ..\\antlrEMSIV\\src\\EMS.g:40:7: 'abs'
+                    {
+                    match("abs"); 
+
+
+                    }
+                    break;
+                case 2 :
+                    // ..\\antlrEMSIV\\src\\EMS.g:40:13: 'sin'
+                    {
+                    match("sin"); 
+
+
+                    }
+                    break;
+                case 3 :
+                    // ..\\antlrEMSIV\\src\\EMS.g:40:19: 'cos'
+                    {
+                    match("cos"); 
+
+
+                    }
+                    break;
+                case 4 :
+                    // ..\\antlrEMSIV\\src\\EMS.g:40:25: 'tan'
+                    {
+                    match("tan"); 
+
+
+                    }
+                    break;
+                case 5 :
+                    // ..\\antlrEMSIV\\src\\EMS.g:40:31: 'asin'
+                    {
+                    match("asin"); 
+
+
+                    }
+                    break;
+                case 6 :
+                    // ..\\antlrEMSIV\\src\\EMS.g:40:38: 'acos'
+                    {
+                    match("acos"); 
+
+
+                    }
+                    break;
+                case 7 :
+                    // ..\\antlrEMSIV\\src\\EMS.g:40:45: 'atan'
+                    {
+                    match("atan"); 
+
+
+                    }
+                    break;
+                case 8 :
+                    // ..\\antlrEMSIV\\src\\EMS.g:40:52: 'ceil'
+                    {
+                    match("ceil"); 
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "F1"
+
+    // $ANTLR start "F2"
+    public final void mF2() throws RecognitionException {
+        try {
+            int _type = F2;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ..\\antlrEMSIV\\src\\EMS.g:41:4: ( ( 'max' | 'min' | 'pow' | 'TPtoE' ) )
+            // ..\\antlrEMSIV\\src\\EMS.g:41:6: ( 'max' | 'min' | 'pow' | 'TPtoE' )
+            {
+            // ..\\antlrEMSIV\\src\\EMS.g:41:6: ( 'max' | 'min' | 'pow' | 'TPtoE' )
+            int alt2=4;
+            switch ( input.LA(1) ) {
+            case 'm':
+                {
+                int LA2_1 = input.LA(2);
+
+                if ( (LA2_1=='a') ) {
+                    alt2=1;
+                }
+                else if ( (LA2_1=='i') ) {
+                    alt2=2;
+                }
+                else {
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 2, 1, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 'p':
+                {
+                alt2=3;
+                }
+                break;
+            case 'T':
+                {
+                alt2=4;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 2, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt2) {
+                case 1 :
+                    // ..\\antlrEMSIV\\src\\EMS.g:41:7: 'max'
+                    {
+                    match("max"); 
+
+
+                    }
+                    break;
+                case 2 :
+                    // ..\\antlrEMSIV\\src\\EMS.g:41:13: 'min'
+                    {
+                    match("min"); 
+
+
+                    }
+                    break;
+                case 3 :
+                    // ..\\antlrEMSIV\\src\\EMS.g:41:19: 'pow'
+                    {
+                    match("pow"); 
+
+
+                    }
+                    break;
+                case 4 :
+                    // ..\\antlrEMSIV\\src\\EMS.g:41:25: 'TPtoE'
+                    {
+                    match("TPtoE"); 
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "F2"
+
+    // $ANTLR start "ID"
+    public final void mID() throws RecognitionException {
+        try {
+            int _type = ID;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ..\\antlrEMSIV\\src\\EMS.g:43:4: ( ( '[' ) ( ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )+ ) ( '.' ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )+ )* ( ']' ) )
+            // ..\\antlrEMSIV\\src\\EMS.g:43:6: ( '[' ) ( ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )+ ) ( '.' ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )+ )* ( ']' )
+            {
+            // ..\\antlrEMSIV\\src\\EMS.g:43:6: ( '[' )
+            // ..\\antlrEMSIV\\src\\EMS.g:43:7: '['
+            {
+            match('['); 
+
+            }
+
+            // ..\\antlrEMSIV\\src\\EMS.g:43:11: ( ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )+ )
+            // ..\\antlrEMSIV\\src\\EMS.g:43:12: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )+
+            {
+            // ..\\antlrEMSIV\\src\\EMS.g:43:12: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )+
+            int cnt3=0;
+            loop3:
+            do {
+                int alt3=2;
+                int LA3_0 = input.LA(1);
+
+                if ( ((LA3_0>='0' && LA3_0<='9')||(LA3_0>='A' && LA3_0<='Z')||LA3_0=='_'||(LA3_0>='a' && LA3_0<='z')) ) {
+                    alt3=1;
+                }
+
+
+                switch (alt3) {
+            	case 1 :
+            	    // ..\\antlrEMSIV\\src\\EMS.g:
+            	    {
+            	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt3 >= 1 ) break loop3;
+                        EarlyExitException eee =
+                            new EarlyExitException(3, input);
+                        throw eee;
+                }
+                cnt3++;
+            } while (true);
+
+
+            }
+
+            // ..\\antlrEMSIV\\src\\EMS.g:43:46: ( '.' ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )+ )*
+            loop5:
+            do {
+                int alt5=2;
+                int LA5_0 = input.LA(1);
+
+                if ( (LA5_0=='.') ) {
+                    alt5=1;
+                }
+
+
+                switch (alt5) {
+            	case 1 :
+            	    // ..\\antlrEMSIV\\src\\EMS.g:43:47: '.' ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )+
+            	    {
+            	    match('.'); 
+            	    // ..\\antlrEMSIV\\src\\EMS.g:43:50: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )+
+            	    int cnt4=0;
+            	    loop4:
+            	    do {
+            	        int alt4=2;
+            	        int LA4_0 = input.LA(1);
+
+            	        if ( ((LA4_0>='0' && LA4_0<='9')||(LA4_0>='A' && LA4_0<='Z')||LA4_0=='_'||(LA4_0>='a' && LA4_0<='z')) ) {
+            	            alt4=1;
+            	        }
+
+
+            	        switch (alt4) {
+            	    	case 1 :
+            	    	    // ..\\antlrEMSIV\\src\\EMS.g:
+            	    	    {
+            	    	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+            	    	        input.consume();
+
+            	    	    }
+            	    	    else {
+            	    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	    	        recover(mse);
+            	    	        throw mse;}
+
+
+            	    	    }
+            	    	    break;
+
+            	    	default :
+            	    	    if ( cnt4 >= 1 ) break loop4;
+            	                EarlyExitException eee =
+            	                    new EarlyExitException(4, input);
+            	                throw eee;
+            	        }
+            	        cnt4++;
+            	    } while (true);
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop5;
+                }
+            } while (true);
+
+            // ..\\antlrEMSIV\\src\\EMS.g:43:85: ( ']' )
+            // ..\\antlrEMSIV\\src\\EMS.g:43:86: ']'
+            {
+            match(']'); 
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "ID"
+
+    // $ANTLR start "NUMBER"
+    public final void mNUMBER() throws RecognitionException {
+        try {
+            int _type = NUMBER;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ..\\antlrEMSIV\\src\\EMS.g:44:8: ( ( '0' | ( ( '1' .. '9' ) ( ( '0' .. '9' )* ) ) ) ( '.' ( ( '0' .. '9' )* ) )? )
+            // ..\\antlrEMSIV\\src\\EMS.g:44:10: ( '0' | ( ( '1' .. '9' ) ( ( '0' .. '9' )* ) ) ) ( '.' ( ( '0' .. '9' )* ) )?
+            {
+            // ..\\antlrEMSIV\\src\\EMS.g:44:10: ( '0' | ( ( '1' .. '9' ) ( ( '0' .. '9' )* ) ) )
+            int alt7=2;
+            int LA7_0 = input.LA(1);
+
+            if ( (LA7_0=='0') ) {
+                alt7=1;
+            }
+            else if ( ((LA7_0>='1' && LA7_0<='9')) ) {
+                alt7=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 7, 0, input);
+
+                throw nvae;
+            }
+            switch (alt7) {
+                case 1 :
+                    // ..\\antlrEMSIV\\src\\EMS.g:44:11: '0'
+                    {
+                    match('0'); 
+
+                    }
+                    break;
+                case 2 :
+                    // ..\\antlrEMSIV\\src\\EMS.g:44:15: ( ( '1' .. '9' ) ( ( '0' .. '9' )* ) )
+                    {
+                    // ..\\antlrEMSIV\\src\\EMS.g:44:15: ( ( '1' .. '9' ) ( ( '0' .. '9' )* ) )
+                    // ..\\antlrEMSIV\\src\\EMS.g:44:16: ( '1' .. '9' ) ( ( '0' .. '9' )* )
+                    {
+                    // ..\\antlrEMSIV\\src\\EMS.g:44:16: ( '1' .. '9' )
+                    // ..\\antlrEMSIV\\src\\EMS.g:44:17: '1' .. '9'
+                    {
+                    matchRange('1','9'); 
+
+                    }
+
+                    // ..\\antlrEMSIV\\src\\EMS.g:44:26: ( ( '0' .. '9' )* )
+                    // ..\\antlrEMSIV\\src\\EMS.g:44:27: ( '0' .. '9' )*
+                    {
+                    // ..\\antlrEMSIV\\src\\EMS.g:44:27: ( '0' .. '9' )*
+                    loop6:
+                    do {
+                        int alt6=2;
+                        int LA6_0 = input.LA(1);
+
+                        if ( ((LA6_0>='0' && LA6_0<='9')) ) {
+                            alt6=1;
+                        }
+
+
+                        switch (alt6) {
+                    	case 1 :
+                    	    // ..\\antlrEMSIV\\src\\EMS.g:44:27: '0' .. '9'
+                    	    {
+                    	    matchRange('0','9'); 
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop6;
+                        }
+                    } while (true);
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ..\\antlrEMSIV\\src\\EMS.g:44:39: ( '.' ( ( '0' .. '9' )* ) )?
+            int alt9=2;
+            int LA9_0 = input.LA(1);
+
+            if ( (LA9_0=='.') ) {
+                alt9=1;
+            }
+            switch (alt9) {
+                case 1 :
+                    // ..\\antlrEMSIV\\src\\EMS.g:44:40: '.' ( ( '0' .. '9' )* )
+                    {
+                    match('.'); 
+                    // ..\\antlrEMSIV\\src\\EMS.g:44:43: ( ( '0' .. '9' )* )
+                    // ..\\antlrEMSIV\\src\\EMS.g:44:44: ( '0' .. '9' )*
+                    {
+                    // ..\\antlrEMSIV\\src\\EMS.g:44:44: ( '0' .. '9' )*
+                    loop8:
+                    do {
+                        int alt8=2;
+                        int LA8_0 = input.LA(1);
+
+                        if ( ((LA8_0>='0' && LA8_0<='9')) ) {
+                            alt8=1;
+                        }
+
+
+                        switch (alt8) {
+                    	case 1 :
+                    	    // ..\\antlrEMSIV\\src\\EMS.g:44:44: '0' .. '9'
+                    	    {
+                    	    matchRange('0','9'); 
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop8;
+                        }
+                    } while (true);
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "NUMBER"
+
+    // $ANTLR start "NEWLINE"
+    public final void mNEWLINE() throws RecognitionException {
+        try {
+            int _type = NEWLINE;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ..\\antlrEMSIV\\src\\EMS.g:45:9: ( '$' )
+            // ..\\antlrEMSIV\\src\\EMS.g:45:11: '$'
+            {
+            match('$'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "NEWLINE"
+
+    public void mTokens() throws RecognitionException {
+        // ..\\antlrEMSIV\\src\\EMS.g:1:8: ( T__9 | T__10 | T__11 | T__12 | T__13 | T__14 | T__15 | F1 | F2 | ID | NUMBER | NEWLINE )
+        int alt10=12;
+        switch ( input.LA(1) ) {
+        case '+':
+            {
+            alt10=1;
+            }
+            break;
+        case '-':
+            {
+            alt10=2;
+            }
+            break;
+        case '*':
+            {
+            alt10=3;
+            }
+            break;
+        case '/':
+            {
+            alt10=4;
+            }
+            break;
+        case '(':
+            {
+            alt10=5;
+            }
+            break;
+        case ')':
+            {
+            alt10=6;
+            }
+            break;
+        case ',':
+            {
+            alt10=7;
+            }
+            break;
+        case 'a':
+        case 'c':
+        case 's':
+        case 't':
+            {
+            alt10=8;
+            }
+            break;
+        case 'T':
+        case 'm':
+        case 'p':
+            {
+            alt10=9;
+            }
+            break;
+        case '[':
+            {
+            alt10=10;
+            }
+            break;
+        case '0':
+        case '1':
+        case '2':
+        case '3':
+        case '4':
+        case '5':
+        case '6':
+        case '7':
+        case '8':
+        case '9':
+            {
+            alt10=11;
+            }
+            break;
+        case '$':
+            {
+            alt10=12;
+            }
+            break;
+        default:
+            NoViableAltException nvae =
+                new NoViableAltException("", 10, 0, input);
+
+            throw nvae;
+        }
+
+        switch (alt10) {
+            case 1 :
+                // ..\\antlrEMSIV\\src\\EMS.g:1:10: T__9
+                {
+                mT__9(); 
+
+                }
+                break;
+            case 2 :
+                // ..\\antlrEMSIV\\src\\EMS.g:1:15: T__10
+                {
+                mT__10(); 
+
+                }
+                break;
+            case 3 :
+                // ..\\antlrEMSIV\\src\\EMS.g:1:21: T__11
+                {
+                mT__11(); 
+
+                }
+                break;
+            case 4 :
+                // ..\\antlrEMSIV\\src\\EMS.g:1:27: T__12
+                {
+                mT__12(); 
+
+                }
+                break;
+            case 5 :
+                // ..\\antlrEMSIV\\src\\EMS.g:1:33: T__13
+                {
+                mT__13(); 
+
+                }
+                break;
+            case 6 :
+                // ..\\antlrEMSIV\\src\\EMS.g:1:39: T__14
+                {
+                mT__14(); 
+
+                }
+                break;
+            case 7 :
+                // ..\\antlrEMSIV\\src\\EMS.g:1:45: T__15
+                {
+                mT__15(); 
+
+                }
+                break;
+            case 8 :
+                // ..\\antlrEMSIV\\src\\EMS.g:1:51: F1
+                {
+                mF1(); 
+
+                }
+                break;
+            case 9 :
+                // ..\\antlrEMSIV\\src\\EMS.g:1:54: F2
+                {
+                mF2(); 
+
+                }
+                break;
+            case 10 :
+                // ..\\antlrEMSIV\\src\\EMS.g:1:57: ID
+                {
+                mID(); 
+
+                }
+                break;
+            case 11 :
+                // ..\\antlrEMSIV\\src\\EMS.g:1:60: NUMBER
+                {
+                mNUMBER(); 
+
+                }
+                break;
+            case 12 :
+                // ..\\antlrEMSIV\\src\\EMS.g:1:67: NEWLINE
+                {
+                mNEWLINE(); 
+
+                }
+                break;
+
+        }
+
+    }
+
+
+    protected DFA1 dfa1 = new DFA1(this);
+    static final String DFA1_eotS =
+        "\13\uffff";
+    static final String DFA1_eofS =
+        "\13\uffff";
+    static final String DFA1_minS =
+        "\1\141\1\142\1\uffff\1\145\7\uffff";
+    static final String DFA1_maxS =
+        "\2\164\1\uffff\1\157\7\uffff";
+    static final String DFA1_acceptS =
+        "\2\uffff\1\2\1\uffff\1\4\1\1\1\5\1\6\1\7\1\3\1\10";
+    static final String DFA1_specialS =
+        "\13\uffff}>";
+    static final String[] DFA1_transitionS = {
+            "\1\1\1\uffff\1\3\17\uffff\1\2\1\4",
+            "\1\5\1\7\17\uffff\1\6\1\10",
+            "",
+            "\1\12\11\uffff\1\11",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA1_eot = DFA.unpackEncodedString(DFA1_eotS);
+    static final short[] DFA1_eof = DFA.unpackEncodedString(DFA1_eofS);
+    static final char[] DFA1_min = DFA.unpackEncodedStringToUnsignedChars(DFA1_minS);
+    static final char[] DFA1_max = DFA.unpackEncodedStringToUnsignedChars(DFA1_maxS);
+    static final short[] DFA1_accept = DFA.unpackEncodedString(DFA1_acceptS);
+    static final short[] DFA1_special = DFA.unpackEncodedString(DFA1_specialS);
+    static final short[][] DFA1_transition;
+
+    static {
+        int numStates = DFA1_transitionS.length;
+        DFA1_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA1_transition[i] = DFA.unpackEncodedString(DFA1_transitionS[i]);
+        }
+    }
+
+    class DFA1 extends DFA {
+
+        public DFA1(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 1;
+            this.eot = DFA1_eot;
+            this.eof = DFA1_eof;
+            this.min = DFA1_min;
+            this.max = DFA1_max;
+            this.accept = DFA1_accept;
+            this.special = DFA1_special;
+            this.transition = DFA1_transition;
+        }
+        public String getDescription() {
+            return "40:6: ( 'abs' | 'sin' | 'cos' | 'tan' | 'asin' | 'acos' | 'atan' | 'ceil' )";
+        }
+    }
+ 
+
+}

+ 648 - 0
src/main/java/com/pbsage/parser/emsiv/EMSParser.java

@@ -0,0 +1,648 @@
+// $ANTLR 3.1 ..\\antlrEMSIV\\src\\EMS.g 2015-12-04 17:45:01
+
+package com.pbsage.parser.emsiv;
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+
+
+import org.antlr.runtime.tree.*;
+
+public class EMSParser extends Parser {
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "NEWLINE", "NUMBER", "ID", "F1", "F2", "'+'", "'-'", "'*'", "'/'", "'('", "')'", "','"
+    };
+    public static final int T__15=15;
+    public static final int NEWLINE=4;
+    public static final int T__12=12;
+    public static final int T__11=11;
+    public static final int T__14=14;
+    public static final int T__13=13;
+    public static final int T__10=10;
+    public static final int NUMBER=5;
+    public static final int F1=7;
+    public static final int F2=8;
+    public static final int ID=6;
+    public static final int EOF=-1;
+    public static final int T__9=9;
+
+    // delegates
+    // delegators
+
+
+        public EMSParser(TokenStream input) {
+            this(input, new RecognizerSharedState());
+        }
+        public EMSParser(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+             
+        }
+        
+    protected TreeAdaptor adaptor = new CommonTreeAdaptor();
+
+    public void setTreeAdaptor(TreeAdaptor adaptor) {
+        this.adaptor = adaptor;
+    }
+    public TreeAdaptor getTreeAdaptor() {
+        return adaptor;
+    }
+
+    public String[] getTokenNames() { return EMSParser.tokenNames; }
+    public String getGrammarFileName() { return "..\\antlrEMSIV\\src\\EMS.g"; }
+
+
+    public static class prog_return extends ParserRuleReturnScope {
+        CommonTree tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "prog"
+    // ..\\antlrEMSIV\\src\\EMS.g:16:1: prog : expr NEWLINE ;
+    public final EMSParser.prog_return prog() throws RecognitionException {
+        EMSParser.prog_return retval = new EMSParser.prog_return();
+        retval.start = input.LT(1);
+
+        CommonTree root_0 = null;
+
+        Token NEWLINE2=null;
+        EMSParser.expr_return expr1 = null;
+
+
+        CommonTree NEWLINE2_tree=null;
+
+        try {
+            // ..\\antlrEMSIV\\src\\EMS.g:17:2: ( expr NEWLINE )
+            // ..\\antlrEMSIV\\src\\EMS.g:17:4: expr NEWLINE
+            {
+            root_0 = (CommonTree)adaptor.nil();
+
+            pushFollow(FOLLOW_expr_in_prog46);
+            expr1=expr();
+
+            state._fsp--;
+
+            adaptor.addChild(root_0, expr1.getTree());
+            NEWLINE2=(Token)match(input,NEWLINE,FOLLOW_NEWLINE_in_prog48); 
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "prog"
+
+    public static class expr_return extends ParserRuleReturnScope {
+        CommonTree tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "expr"
+    // ..\\antlrEMSIV\\src\\EMS.g:20:1: expr : multExpr ( ( '+' | '-' ) multExpr )* ;
+    public final EMSParser.expr_return expr() throws RecognitionException {
+        EMSParser.expr_return retval = new EMSParser.expr_return();
+        retval.start = input.LT(1);
+
+        CommonTree root_0 = null;
+
+        Token char_literal4=null;
+        Token char_literal5=null;
+        EMSParser.multExpr_return multExpr3 = null;
+
+        EMSParser.multExpr_return multExpr6 = null;
+
+
+        CommonTree char_literal4_tree=null;
+        CommonTree char_literal5_tree=null;
+
+        try {
+            // ..\\antlrEMSIV\\src\\EMS.g:21:2: ( multExpr ( ( '+' | '-' ) multExpr )* )
+            // ..\\antlrEMSIV\\src\\EMS.g:21:4: multExpr ( ( '+' | '-' ) multExpr )*
+            {
+            root_0 = (CommonTree)adaptor.nil();
+
+            pushFollow(FOLLOW_multExpr_in_expr60);
+            multExpr3=multExpr();
+
+            state._fsp--;
+
+            adaptor.addChild(root_0, multExpr3.getTree());
+            // ..\\antlrEMSIV\\src\\EMS.g:21:13: ( ( '+' | '-' ) multExpr )*
+            loop2:
+            do {
+                int alt2=2;
+                int LA2_0 = input.LA(1);
+
+                if ( ((LA2_0>=9 && LA2_0<=10)) ) {
+                    alt2=1;
+                }
+
+
+                switch (alt2) {
+            	case 1 :
+            	    // ..\\antlrEMSIV\\src\\EMS.g:21:14: ( '+' | '-' ) multExpr
+            	    {
+            	    // ..\\antlrEMSIV\\src\\EMS.g:21:14: ( '+' | '-' )
+            	    int alt1=2;
+            	    int LA1_0 = input.LA(1);
+
+            	    if ( (LA1_0==9) ) {
+            	        alt1=1;
+            	    }
+            	    else if ( (LA1_0==10) ) {
+            	        alt1=2;
+            	    }
+            	    else {
+            	        NoViableAltException nvae =
+            	            new NoViableAltException("", 1, 0, input);
+
+            	        throw nvae;
+            	    }
+            	    switch (alt1) {
+            	        case 1 :
+            	            // ..\\antlrEMSIV\\src\\EMS.g:21:15: '+'
+            	            {
+            	            char_literal4=(Token)match(input,9,FOLLOW_9_in_expr64); 
+            	            char_literal4_tree = (CommonTree)adaptor.create(char_literal4);
+            	            root_0 = (CommonTree)adaptor.becomeRoot(char_literal4_tree, root_0);
+
+
+            	            }
+            	            break;
+            	        case 2 :
+            	            // ..\\antlrEMSIV\\src\\EMS.g:21:20: '-'
+            	            {
+            	            char_literal5=(Token)match(input,10,FOLLOW_10_in_expr67); 
+            	            char_literal5_tree = (CommonTree)adaptor.create(char_literal5);
+            	            root_0 = (CommonTree)adaptor.becomeRoot(char_literal5_tree, root_0);
+
+
+            	            }
+            	            break;
+
+            	    }
+
+            	    pushFollow(FOLLOW_multExpr_in_expr71);
+            	    multExpr6=multExpr();
+
+            	    state._fsp--;
+
+            	    adaptor.addChild(root_0, multExpr6.getTree());
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop2;
+                }
+            } while (true);
+
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "expr"
+
+    public static class multExpr_return extends ParserRuleReturnScope {
+        CommonTree tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "multExpr"
+    // ..\\antlrEMSIV\\src\\EMS.g:24:1: multExpr : atom ( ( '*' | '/' ) atom )* ;
+    public final EMSParser.multExpr_return multExpr() throws RecognitionException {
+        EMSParser.multExpr_return retval = new EMSParser.multExpr_return();
+        retval.start = input.LT(1);
+
+        CommonTree root_0 = null;
+
+        Token char_literal8=null;
+        Token char_literal9=null;
+        EMSParser.atom_return atom7 = null;
+
+        EMSParser.atom_return atom10 = null;
+
+
+        CommonTree char_literal8_tree=null;
+        CommonTree char_literal9_tree=null;
+
+        try {
+            // ..\\antlrEMSIV\\src\\EMS.g:25:2: ( atom ( ( '*' | '/' ) atom )* )
+            // ..\\antlrEMSIV\\src\\EMS.g:25:4: atom ( ( '*' | '/' ) atom )*
+            {
+            root_0 = (CommonTree)adaptor.nil();
+
+            pushFollow(FOLLOW_atom_in_multExpr85);
+            atom7=atom();
+
+            state._fsp--;
+
+            adaptor.addChild(root_0, atom7.getTree());
+            // ..\\antlrEMSIV\\src\\EMS.g:25:9: ( ( '*' | '/' ) atom )*
+            loop4:
+            do {
+                int alt4=2;
+                int LA4_0 = input.LA(1);
+
+                if ( ((LA4_0>=11 && LA4_0<=12)) ) {
+                    alt4=1;
+                }
+
+
+                switch (alt4) {
+            	case 1 :
+            	    // ..\\antlrEMSIV\\src\\EMS.g:25:10: ( '*' | '/' ) atom
+            	    {
+            	    // ..\\antlrEMSIV\\src\\EMS.g:25:10: ( '*' | '/' )
+            	    int alt3=2;
+            	    int LA3_0 = input.LA(1);
+
+            	    if ( (LA3_0==11) ) {
+            	        alt3=1;
+            	    }
+            	    else if ( (LA3_0==12) ) {
+            	        alt3=2;
+            	    }
+            	    else {
+            	        NoViableAltException nvae =
+            	            new NoViableAltException("", 3, 0, input);
+
+            	        throw nvae;
+            	    }
+            	    switch (alt3) {
+            	        case 1 :
+            	            // ..\\antlrEMSIV\\src\\EMS.g:25:11: '*'
+            	            {
+            	            char_literal8=(Token)match(input,11,FOLLOW_11_in_multExpr89); 
+            	            char_literal8_tree = (CommonTree)adaptor.create(char_literal8);
+            	            root_0 = (CommonTree)adaptor.becomeRoot(char_literal8_tree, root_0);
+
+
+            	            }
+            	            break;
+            	        case 2 :
+            	            // ..\\antlrEMSIV\\src\\EMS.g:25:16: '/'
+            	            {
+            	            char_literal9=(Token)match(input,12,FOLLOW_12_in_multExpr92); 
+            	            char_literal9_tree = (CommonTree)adaptor.create(char_literal9);
+            	            root_0 = (CommonTree)adaptor.becomeRoot(char_literal9_tree, root_0);
+
+
+            	            }
+            	            break;
+
+            	    }
+
+            	    pushFollow(FOLLOW_atom_in_multExpr96);
+            	    atom10=atom();
+
+            	    state._fsp--;
+
+            	    adaptor.addChild(root_0, atom10.getTree());
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop4;
+                }
+            } while (true);
+
+
+            }
+
+            retval.stop = input.LT(-1);
+
+            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "multExpr"
+
+    public static class atom_return extends ParserRuleReturnScope {
+        CommonTree tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "atom"
+    // ..\\antlrEMSIV\\src\\EMS.g:28:1: atom : ( NUMBER | ID | func | '(' expr ')' );
+    public final EMSParser.atom_return atom() throws RecognitionException {
+        EMSParser.atom_return retval = new EMSParser.atom_return();
+        retval.start = input.LT(1);
+
+        CommonTree root_0 = null;
+
+        Token NUMBER11=null;
+        Token ID12=null;
+        Token char_literal14=null;
+        Token char_literal16=null;
+        EMSParser.func_return func13 = null;
+
+        EMSParser.expr_return expr15 = null;
+
+
+        CommonTree NUMBER11_tree=null;
+        CommonTree ID12_tree=null;
+        CommonTree char_literal14_tree=null;
+        CommonTree char_literal16_tree=null;
+
+        try {
+            // ..\\antlrEMSIV\\src\\EMS.g:29:2: ( NUMBER | ID | func | '(' expr ')' )
+            int alt5=4;
+            switch ( input.LA(1) ) {
+            case NUMBER:
+                {
+                alt5=1;
+                }
+                break;
+            case ID:
+                {
+                alt5=2;
+                }
+                break;
+            case F1:
+            case F2:
+                {
+                alt5=3;
+                }
+                break;
+            case 13:
+                {
+                alt5=4;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 5, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt5) {
+                case 1 :
+                    // ..\\antlrEMSIV\\src\\EMS.g:29:4: NUMBER
+                    {
+                    root_0 = (CommonTree)adaptor.nil();
+
+                    NUMBER11=(Token)match(input,NUMBER,FOLLOW_NUMBER_in_atom110); 
+                    NUMBER11_tree = (CommonTree)adaptor.create(NUMBER11);
+                    adaptor.addChild(root_0, NUMBER11_tree);
+
+
+                    }
+                    break;
+                case 2 :
+                    // ..\\antlrEMSIV\\src\\EMS.g:30:4: ID
+                    {
+                    root_0 = (CommonTree)adaptor.nil();
+
+                    ID12=(Token)match(input,ID,FOLLOW_ID_in_atom116); 
+                    ID12_tree = (CommonTree)adaptor.create(ID12);
+                    adaptor.addChild(root_0, ID12_tree);
+
+
+                    }
+                    break;
+                case 3 :
+                    // ..\\antlrEMSIV\\src\\EMS.g:31:4: func
+                    {
+                    root_0 = (CommonTree)adaptor.nil();
+
+                    pushFollow(FOLLOW_func_in_atom121);
+                    func13=func();
+
+                    state._fsp--;
+
+                    adaptor.addChild(root_0, func13.getTree());
+
+                    }
+                    break;
+                case 4 :
+                    // ..\\antlrEMSIV\\src\\EMS.g:32:4: '(' expr ')'
+                    {
+                    root_0 = (CommonTree)adaptor.nil();
+
+                    char_literal14=(Token)match(input,13,FOLLOW_13_in_atom126); 
+                    pushFollow(FOLLOW_expr_in_atom129);
+                    expr15=expr();
+
+                    state._fsp--;
+
+                    adaptor.addChild(root_0, expr15.getTree());
+                    char_literal16=(Token)match(input,14,FOLLOW_14_in_atom131); 
+
+                    }
+                    break;
+
+            }
+            retval.stop = input.LT(-1);
+
+            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "atom"
+
+    public static class func_return extends ParserRuleReturnScope {
+        CommonTree tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "func"
+    // ..\\antlrEMSIV\\src\\EMS.g:35:1: func : ( F1 '(' expr ')' | F2 '(' expr ',' expr ')' );
+    public final EMSParser.func_return func() throws RecognitionException {
+        EMSParser.func_return retval = new EMSParser.func_return();
+        retval.start = input.LT(1);
+
+        CommonTree root_0 = null;
+
+        Token F117=null;
+        Token char_literal18=null;
+        Token char_literal20=null;
+        Token F221=null;
+        Token char_literal22=null;
+        Token char_literal24=null;
+        Token char_literal26=null;
+        EMSParser.expr_return expr19 = null;
+
+        EMSParser.expr_return expr23 = null;
+
+        EMSParser.expr_return expr25 = null;
+
+
+        CommonTree F117_tree=null;
+        CommonTree char_literal18_tree=null;
+        CommonTree char_literal20_tree=null;
+        CommonTree F221_tree=null;
+        CommonTree char_literal22_tree=null;
+        CommonTree char_literal24_tree=null;
+        CommonTree char_literal26_tree=null;
+
+        try {
+            // ..\\antlrEMSIV\\src\\EMS.g:36:2: ( F1 '(' expr ')' | F2 '(' expr ',' expr ')' )
+            int alt6=2;
+            int LA6_0 = input.LA(1);
+
+            if ( (LA6_0==F1) ) {
+                alt6=1;
+            }
+            else if ( (LA6_0==F2) ) {
+                alt6=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 6, 0, input);
+
+                throw nvae;
+            }
+            switch (alt6) {
+                case 1 :
+                    // ..\\antlrEMSIV\\src\\EMS.g:36:4: F1 '(' expr ')'
+                    {
+                    root_0 = (CommonTree)adaptor.nil();
+
+                    F117=(Token)match(input,F1,FOLLOW_F1_in_func143); 
+                    F117_tree = (CommonTree)adaptor.create(F117);
+                    root_0 = (CommonTree)adaptor.becomeRoot(F117_tree, root_0);
+
+                    char_literal18=(Token)match(input,13,FOLLOW_13_in_func146); 
+                    pushFollow(FOLLOW_expr_in_func149);
+                    expr19=expr();
+
+                    state._fsp--;
+
+                    adaptor.addChild(root_0, expr19.getTree());
+                    char_literal20=(Token)match(input,14,FOLLOW_14_in_func151); 
+
+                    }
+                    break;
+                case 2 :
+                    // ..\\antlrEMSIV\\src\\EMS.g:37:4: F2 '(' expr ',' expr ')'
+                    {
+                    root_0 = (CommonTree)adaptor.nil();
+
+                    F221=(Token)match(input,F2,FOLLOW_F2_in_func157); 
+                    F221_tree = (CommonTree)adaptor.create(F221);
+                    root_0 = (CommonTree)adaptor.becomeRoot(F221_tree, root_0);
+
+                    char_literal22=(Token)match(input,13,FOLLOW_13_in_func160); 
+                    pushFollow(FOLLOW_expr_in_func163);
+                    expr23=expr();
+
+                    state._fsp--;
+
+                    adaptor.addChild(root_0, expr23.getTree());
+                    char_literal24=(Token)match(input,15,FOLLOW_15_in_func165); 
+                    pushFollow(FOLLOW_expr_in_func168);
+                    expr25=expr();
+
+                    state._fsp--;
+
+                    adaptor.addChild(root_0, expr25.getTree());
+                    char_literal26=(Token)match(input,14,FOLLOW_14_in_func170); 
+
+                    }
+                    break;
+
+            }
+            retval.stop = input.LT(-1);
+
+            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "func"
+
+    // Delegated rules
+
+
+ 
+
+    public static final BitSet FOLLOW_expr_in_prog46 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_NEWLINE_in_prog48 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_multExpr_in_expr60 = new BitSet(new long[]{0x0000000000000602L});
+    public static final BitSet FOLLOW_9_in_expr64 = new BitSet(new long[]{0x00000000000021E0L});
+    public static final BitSet FOLLOW_10_in_expr67 = new BitSet(new long[]{0x00000000000021E0L});
+    public static final BitSet FOLLOW_multExpr_in_expr71 = new BitSet(new long[]{0x0000000000000602L});
+    public static final BitSet FOLLOW_atom_in_multExpr85 = new BitSet(new long[]{0x0000000000001802L});
+    public static final BitSet FOLLOW_11_in_multExpr89 = new BitSet(new long[]{0x00000000000021E0L});
+    public static final BitSet FOLLOW_12_in_multExpr92 = new BitSet(new long[]{0x00000000000021E0L});
+    public static final BitSet FOLLOW_atom_in_multExpr96 = new BitSet(new long[]{0x0000000000001802L});
+    public static final BitSet FOLLOW_NUMBER_in_atom110 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_atom116 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_func_in_atom121 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_13_in_atom126 = new BitSet(new long[]{0x00000000000021E0L});
+    public static final BitSet FOLLOW_expr_in_atom129 = new BitSet(new long[]{0x0000000000004000L});
+    public static final BitSet FOLLOW_14_in_atom131 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_F1_in_func143 = new BitSet(new long[]{0x0000000000002000L});
+    public static final BitSet FOLLOW_13_in_func146 = new BitSet(new long[]{0x00000000000021E0L});
+    public static final BitSet FOLLOW_expr_in_func149 = new BitSet(new long[]{0x0000000000004000L});
+    public static final BitSet FOLLOW_14_in_func151 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_F2_in_func157 = new BitSet(new long[]{0x0000000000002000L});
+    public static final BitSet FOLLOW_13_in_func160 = new BitSet(new long[]{0x00000000000021E0L});
+    public static final BitSet FOLLOW_expr_in_func163 = new BitSet(new long[]{0x0000000000008000L});
+    public static final BitSet FOLLOW_15_in_func165 = new BitSet(new long[]{0x00000000000021E0L});
+    public static final BitSet FOLLOW_expr_in_func168 = new BitSet(new long[]{0x0000000000004000L});
+    public static final BitSet FOLLOW_14_in_func170 = new BitSet(new long[]{0x0000000000000002L});
+
+}

+ 330 - 0
src/main/java/com/pbsage/parser/emsiv/EMSScanner.java

@@ -0,0 +1,330 @@
+// $ANTLR 3.1 ..\\antlrEMSIV\\src\\EMSScanner.g 2015-12-04 17:45:01
+
+package com.pbsage.parser.emsiv;
+
+import java.util.Map;
+import java.util.HashMap;
+
+
+import org.antlr.runtime.*;
+import org.antlr.runtime.tree.*;import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+
+public class EMSScanner extends TreeParser {
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "NEWLINE", "NUMBER", "ID", "F1", "F2", "'+'", "'-'", "'*'", "'/'", "'('", "')'", "','"
+    };
+    public static final int T__15=15;
+    public static final int NEWLINE=4;
+    public static final int T__12=12;
+    public static final int T__11=11;
+    public static final int T__14=14;
+    public static final int T__13=13;
+    public static final int T__10=10;
+    public static final int NUMBER=5;
+    public static final int F1=7;
+    public static final int F2=8;
+    public static final int ID=6;
+    public static final int EOF=-1;
+    public static final int T__9=9;
+
+    // delegates
+    // delegators
+
+
+        public EMSScanner(TreeNodeStream input) {
+            this(input, new RecognizerSharedState());
+        }
+        public EMSScanner(TreeNodeStream input, RecognizerSharedState state) {
+            super(input, state);
+             
+        }
+        
+
+    public String[] getTokenNames() { return EMSScanner.tokenNames; }
+    public String getGrammarFileName() { return "..\\antlrEMSIV\\src\\EMSScanner.g"; }
+
+
+    	Map<String, String> varDict = new HashMap<String, String>();
+    	
+    	private String GetRealVar(String var)
+    	{
+    		return var.substring(1, var.length()-1);
+    	}
+
+    	private void AddVar(String var)
+    	{	
+    		if(!this.varDict.containsKey(var))
+    		{
+    			this.varDict.put(var,null);
+    		}
+    	}
+    	
+    	public Map<String, String> GetVarDict()
+    	{
+    		return varDict; 
+    	}
+
+
+
+    // $ANTLR start "prog"
+    // ..\\antlrEMSIV\\src\\EMSScanner.g:37:1: prog : expr ;
+    public final void prog() throws RecognitionException {
+        try {
+            // ..\\antlrEMSIV\\src\\EMSScanner.g:38:2: ( expr )
+            // ..\\antlrEMSIV\\src\\EMSScanner.g:38:4: expr
+            {
+            pushFollow(FOLLOW_expr_in_prog48);
+            expr();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "prog"
+
+
+    // $ANTLR start "expr"
+    // ..\\antlrEMSIV\\src\\EMSScanner.g:41:1: expr : ( ^( '+' expr expr ) | ^( '-' expr expr ) | ^( '*' expr expr ) | ^( '/' expr expr ) | ID | NUMBER | ^( F1 expr ) | ^( F2 expr expr ) );
+    public final void expr() throws RecognitionException {
+        CommonTree ID1=null;
+
+        try {
+            // ..\\antlrEMSIV\\src\\EMSScanner.g:42:2: ( ^( '+' expr expr ) | ^( '-' expr expr ) | ^( '*' expr expr ) | ^( '/' expr expr ) | ID | NUMBER | ^( F1 expr ) | ^( F2 expr expr ) )
+            int alt1=8;
+            switch ( input.LA(1) ) {
+            case 9:
+                {
+                alt1=1;
+                }
+                break;
+            case 10:
+                {
+                alt1=2;
+                }
+                break;
+            case 11:
+                {
+                alt1=3;
+                }
+                break;
+            case 12:
+                {
+                alt1=4;
+                }
+                break;
+            case ID:
+                {
+                alt1=5;
+                }
+                break;
+            case NUMBER:
+                {
+                alt1=6;
+                }
+                break;
+            case F1:
+                {
+                alt1=7;
+                }
+                break;
+            case F2:
+                {
+                alt1=8;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 1, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt1) {
+                case 1 :
+                    // ..\\antlrEMSIV\\src\\EMSScanner.g:42:4: ^( '+' expr expr )
+                    {
+                    match(input,9,FOLLOW_9_in_expr60); 
+
+                    match(input, Token.DOWN, null); 
+                    pushFollow(FOLLOW_expr_in_expr62);
+                    expr();
+
+                    state._fsp--;
+
+                    pushFollow(FOLLOW_expr_in_expr64);
+                    expr();
+
+                    state._fsp--;
+
+
+                    match(input, Token.UP, null); 
+
+                    }
+                    break;
+                case 2 :
+                    // ..\\antlrEMSIV\\src\\EMSScanner.g:43:4: ^( '-' expr expr )
+                    {
+                    match(input,10,FOLLOW_10_in_expr71); 
+
+                    match(input, Token.DOWN, null); 
+                    pushFollow(FOLLOW_expr_in_expr73);
+                    expr();
+
+                    state._fsp--;
+
+                    pushFollow(FOLLOW_expr_in_expr75);
+                    expr();
+
+                    state._fsp--;
+
+
+                    match(input, Token.UP, null); 
+
+                    }
+                    break;
+                case 3 :
+                    // ..\\antlrEMSIV\\src\\EMSScanner.g:44:4: ^( '*' expr expr )
+                    {
+                    match(input,11,FOLLOW_11_in_expr84); 
+
+                    match(input, Token.DOWN, null); 
+                    pushFollow(FOLLOW_expr_in_expr86);
+                    expr();
+
+                    state._fsp--;
+
+                    pushFollow(FOLLOW_expr_in_expr88);
+                    expr();
+
+                    state._fsp--;
+
+
+                    match(input, Token.UP, null); 
+
+                    }
+                    break;
+                case 4 :
+                    // ..\\antlrEMSIV\\src\\EMSScanner.g:45:4: ^( '/' expr expr )
+                    {
+                    match(input,12,FOLLOW_12_in_expr95); 
+
+                    match(input, Token.DOWN, null); 
+                    pushFollow(FOLLOW_expr_in_expr97);
+                    expr();
+
+                    state._fsp--;
+
+                    pushFollow(FOLLOW_expr_in_expr99);
+                    expr();
+
+                    state._fsp--;
+
+
+                    match(input, Token.UP, null); 
+
+                    }
+                    break;
+                case 5 :
+                    // ..\\antlrEMSIV\\src\\EMSScanner.g:46:4: ID
+                    {
+                    ID1=(CommonTree)match(input,ID,FOLLOW_ID_in_expr105); 
+                    this.AddVar(this.GetRealVar((ID1!=null?ID1.getText():null)));
+
+                    }
+                    break;
+                case 6 :
+                    // ..\\antlrEMSIV\\src\\EMSScanner.g:47:4: NUMBER
+                    {
+                    match(input,NUMBER,FOLLOW_NUMBER_in_expr112); 
+
+                    }
+                    break;
+                case 7 :
+                    // ..\\antlrEMSIV\\src\\EMSScanner.g:48:4: ^( F1 expr )
+                    {
+                    match(input,F1,FOLLOW_F1_in_expr118); 
+
+                    match(input, Token.DOWN, null); 
+                    pushFollow(FOLLOW_expr_in_expr120);
+                    expr();
+
+                    state._fsp--;
+
+
+                    match(input, Token.UP, null); 
+
+                    }
+                    break;
+                case 8 :
+                    // ..\\antlrEMSIV\\src\\EMSScanner.g:49:4: ^( F2 expr expr )
+                    {
+                    match(input,F2,FOLLOW_F2_in_expr127); 
+
+                    match(input, Token.DOWN, null); 
+                    pushFollow(FOLLOW_expr_in_expr129);
+                    expr();
+
+                    state._fsp--;
+
+                    pushFollow(FOLLOW_expr_in_expr131);
+                    expr();
+
+                    state._fsp--;
+
+
+                    match(input, Token.UP, null); 
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "expr"
+
+    // Delegated rules
+
+
+ 
+
+    public static final BitSet FOLLOW_expr_in_prog48 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_9_in_expr60 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_expr_in_expr62 = new BitSet(new long[]{0x0000000000001FE0L});
+    public static final BitSet FOLLOW_expr_in_expr64 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_10_in_expr71 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_expr_in_expr73 = new BitSet(new long[]{0x0000000000001FE0L});
+    public static final BitSet FOLLOW_expr_in_expr75 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_11_in_expr84 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_expr_in_expr86 = new BitSet(new long[]{0x0000000000001FE0L});
+    public static final BitSet FOLLOW_expr_in_expr88 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_12_in_expr95 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_expr_in_expr97 = new BitSet(new long[]{0x0000000000001FE0L});
+    public static final BitSet FOLLOW_expr_in_expr99 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_ID_in_expr105 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NUMBER_in_expr112 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_F1_in_expr118 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_expr_in_expr120 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_F2_in_expr127 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_expr_in_expr129 = new BitSet(new long[]{0x0000000000001FE0L});
+    public static final BitSet FOLLOW_expr_in_expr131 = new BitSet(new long[]{0x0000000000000008L});
+
+}

+ 345 - 0
src/main/java/com/pbsage/parser/emsiv/EMSWalker.java

@@ -0,0 +1,345 @@
+// $ANTLR 3.1 ..\\antlrEMSIV\\src\\EMSWalker.g 2015-12-04 17:45:01
+
+package com.pbsage.parser.emsiv;
+
+import java.util.Map;
+import java.util.HashMap;
+
+
+import org.antlr.runtime.*;
+import org.antlr.runtime.tree.*;import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+
+public class EMSWalker extends TreeParser {
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "NEWLINE", "NUMBER", "ID", "F1", "F2", "'+'", "'-'", "'*'", "'/'", "'('", "')'", "','"
+    };
+    public static final int T__15=15;
+    public static final int NEWLINE=4;
+    public static final int T__12=12;
+    public static final int T__11=11;
+    public static final int T__14=14;
+    public static final int T__13=13;
+    public static final int T__10=10;
+    public static final int NUMBER=5;
+    public static final int F1=7;
+    public static final int F2=8;
+    public static final int ID=6;
+    public static final int EOF=-1;
+    public static final int T__9=9;
+
+    // delegates
+    // delegators
+
+
+        public EMSWalker(TreeNodeStream input) {
+            this(input, new RecognizerSharedState());
+        }
+        public EMSWalker(TreeNodeStream input, RecognizerSharedState state) {
+            super(input, state);
+             
+        }
+        
+
+    public String[] getTokenNames() { return EMSWalker.tokenNames; }
+    public String getGrammarFileName() { return "..\\antlrEMSIV\\src\\EMSWalker.g"; }
+
+
+    	public Map<String, Double> varValue = new HashMap<String, Double>();
+    	
+    	private String GetRealVar(String var)
+    	{
+    		return var.substring(1, var.length()-1);
+    	}
+
+
+
+    // $ANTLR start "prog"
+    // ..\\antlrEMSIV\\src\\EMSWalker.g:27:1: prog returns [double value] : (a= expr ) ;
+    public final double prog() throws RecognitionException {
+        double value = 0.0;
+
+        double a = 0.0;
+
+
+        try {
+            // ..\\antlrEMSIV\\src\\EMSWalker.g:28:2: ( (a= expr ) )
+            // ..\\antlrEMSIV\\src\\EMSWalker.g:28:4: (a= expr )
+            {
+            // ..\\antlrEMSIV\\src\\EMSWalker.g:28:4: (a= expr )
+            // ..\\antlrEMSIV\\src\\EMSWalker.g:28:5: a= expr
+            {
+            pushFollow(FOLLOW_expr_in_prog64);
+            a=expr();
+
+            state._fsp--;
+
+
+            }
+
+            value =a;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return value;
+    }
+    // $ANTLR end "prog"
+
+
+    // $ANTLR start "expr"
+    // ..\\antlrEMSIV\\src\\EMSWalker.g:31:1: expr returns [double value] : ( ^( '+' a= expr b= expr ) | ^( '-' a= expr b= expr ) | ^( '*' a= expr b= expr ) | ^( '/' a= expr b= expr ) | ID | NUMBER | ^( F1 a= expr ) | ^( F2 a= expr b= expr ) );
+    public final double expr() throws RecognitionException {
+        double value = 0.0;
+
+        CommonTree ID1=null;
+        CommonTree NUMBER2=null;
+        CommonTree F13=null;
+        CommonTree F24=null;
+        double a = 0.0;
+
+        double b = 0.0;
+
+
+        try {
+            // ..\\antlrEMSIV\\src\\EMSWalker.g:32:2: ( ^( '+' a= expr b= expr ) | ^( '-' a= expr b= expr ) | ^( '*' a= expr b= expr ) | ^( '/' a= expr b= expr ) | ID | NUMBER | ^( F1 a= expr ) | ^( F2 a= expr b= expr ) )
+            int alt1=8;
+            switch ( input.LA(1) ) {
+            case 9:
+                {
+                alt1=1;
+                }
+                break;
+            case 10:
+                {
+                alt1=2;
+                }
+                break;
+            case 11:
+                {
+                alt1=3;
+                }
+                break;
+            case 12:
+                {
+                alt1=4;
+                }
+                break;
+            case ID:
+                {
+                alt1=5;
+                }
+                break;
+            case NUMBER:
+                {
+                alt1=6;
+                }
+                break;
+            case F1:
+                {
+                alt1=7;
+                }
+                break;
+            case F2:
+                {
+                alt1=8;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 1, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt1) {
+                case 1 :
+                    // ..\\antlrEMSIV\\src\\EMSWalker.g:32:4: ^( '+' a= expr b= expr )
+                    {
+                    match(input,9,FOLLOW_9_in_expr83); 
+
+                    match(input, Token.DOWN, null); 
+                    pushFollow(FOLLOW_expr_in_expr87);
+                    a=expr();
+
+                    state._fsp--;
+
+                    pushFollow(FOLLOW_expr_in_expr91);
+                    b=expr();
+
+                    state._fsp--;
+
+
+                    match(input, Token.UP, null); 
+                    value = a+b;
+
+                    }
+                    break;
+                case 2 :
+                    // ..\\antlrEMSIV\\src\\EMSWalker.g:33:4: ^( '-' a= expr b= expr )
+                    {
+                    match(input,10,FOLLOW_10_in_expr100); 
+
+                    match(input, Token.DOWN, null); 
+                    pushFollow(FOLLOW_expr_in_expr104);
+                    a=expr();
+
+                    state._fsp--;
+
+                    pushFollow(FOLLOW_expr_in_expr108);
+                    b=expr();
+
+                    state._fsp--;
+
+
+                    match(input, Token.UP, null); 
+                    value = a-b;
+
+                    }
+                    break;
+                case 3 :
+                    // ..\\antlrEMSIV\\src\\EMSWalker.g:34:4: ^( '*' a= expr b= expr )
+                    {
+                    match(input,11,FOLLOW_11_in_expr120); 
+
+                    match(input, Token.DOWN, null); 
+                    pushFollow(FOLLOW_expr_in_expr124);
+                    a=expr();
+
+                    state._fsp--;
+
+                    pushFollow(FOLLOW_expr_in_expr128);
+                    b=expr();
+
+                    state._fsp--;
+
+
+                    match(input, Token.UP, null); 
+                    value = a*b;
+
+                    }
+                    break;
+                case 4 :
+                    // ..\\antlrEMSIV\\src\\EMSWalker.g:35:4: ^( '/' a= expr b= expr )
+                    {
+                    match(input,12,FOLLOW_12_in_expr137); 
+
+                    match(input, Token.DOWN, null); 
+                    pushFollow(FOLLOW_expr_in_expr141);
+                    a=expr();
+
+                    state._fsp--;
+
+                    pushFollow(FOLLOW_expr_in_expr145);
+                    b=expr();
+
+                    state._fsp--;
+
+
+                    match(input, Token.UP, null); 
+                    value = a/b;
+
+                    }
+                    break;
+                case 5 :
+                    // ..\\antlrEMSIV\\src\\EMSWalker.g:36:4: ID
+                    {
+                    ID1=(CommonTree)match(input,ID,FOLLOW_ID_in_expr153); 
+                    value = this.varValue.get(this.GetRealVar((ID1!=null?ID1.getText():null)));
+
+                    }
+                    break;
+                case 6 :
+                    // ..\\antlrEMSIV\\src\\EMSWalker.g:37:4: NUMBER
+                    {
+                    NUMBER2=(CommonTree)match(input,NUMBER,FOLLOW_NUMBER_in_expr160); 
+                    value = Double.parseDouble((NUMBER2!=null?NUMBER2.getText():null));
+
+                    }
+                    break;
+                case 7 :
+                    // ..\\antlrEMSIV\\src\\EMSWalker.g:38:4: ^( F1 a= expr )
+                    {
+                    F13=(CommonTree)match(input,F1,FOLLOW_F1_in_expr169); 
+
+                    match(input, Token.DOWN, null); 
+                    pushFollow(FOLLOW_expr_in_expr173);
+                    a=expr();
+
+                    state._fsp--;
+
+
+                    match(input, Token.UP, null); 
+                    value = FunctionUtil.compute((F13!=null?F13.getText():null),a);
+
+                    }
+                    break;
+                case 8 :
+                    // ..\\antlrEMSIV\\src\\EMSWalker.g:39:4: ^( F2 a= expr b= expr )
+                    {
+                    F24=(CommonTree)match(input,F2,FOLLOW_F2_in_expr182); 
+
+                    match(input, Token.DOWN, null); 
+                    pushFollow(FOLLOW_expr_in_expr186);
+                    a=expr();
+
+                    state._fsp--;
+
+                    pushFollow(FOLLOW_expr_in_expr190);
+                    b=expr();
+
+                    state._fsp--;
+
+
+                    match(input, Token.UP, null); 
+                    value = FunctionUtil.compute((F24!=null?F24.getText():null),a,b);
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return value;
+    }
+    // $ANTLR end "expr"
+
+    // Delegated rules
+
+
+ 
+
+    public static final BitSet FOLLOW_expr_in_prog64 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_9_in_expr83 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_expr_in_expr87 = new BitSet(new long[]{0x0000000000001FE0L});
+    public static final BitSet FOLLOW_expr_in_expr91 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_10_in_expr100 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_expr_in_expr104 = new BitSet(new long[]{0x0000000000001FE0L});
+    public static final BitSet FOLLOW_expr_in_expr108 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_11_in_expr120 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_expr_in_expr124 = new BitSet(new long[]{0x0000000000001FE0L});
+    public static final BitSet FOLLOW_expr_in_expr128 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_12_in_expr137 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_expr_in_expr141 = new BitSet(new long[]{0x0000000000001FE0L});
+    public static final BitSet FOLLOW_expr_in_expr145 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_ID_in_expr153 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NUMBER_in_expr160 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_F1_in_expr169 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_expr_in_expr173 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_F2_in_expr182 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_expr_in_expr186 = new BitSet(new long[]{0x0000000000001FE0L});
+    public static final BitSet FOLLOW_expr_in_expr190 = new BitSet(new long[]{0x0000000000000008L});
+
+}

+ 34 - 0
src/main/java/com/pbsage/parser/emsiv/FunctionUtil.java

@@ -0,0 +1,34 @@
+package com.pbsage.parser.emsiv;
+
+import lombok.extern.slf4j.Slf4j;
+
+import java.lang.reflect.Method;
+@Slf4j
+public class FunctionUtil {
+
+	public static double compute(String function, double a) {
+		double result = 0.0;
+		Class<?> mathClass = Math.class;
+		try {
+			Method method = mathClass.getMethod(function,
+					new Class[] { double.class });
+			result = (Double) method.invoke(mathClass, new Object[] { a });
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+		return result;
+	}
+
+	public static double compute(String function, double a, double b) {
+		double result = 0.0;
+		Class<?> mathClass = Math.class;
+		try {
+			Method method = mathClass.getMethod(function, new Class[] {
+					double.class, double.class });
+			result = (Double) method.invoke(mathClass, new Object[] { a, b });
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+		return result;
+	}
+}

+ 44 - 0
src/main/java/com/persagy/entity/EntityDynamicData.java

@@ -0,0 +1,44 @@
+package com.persagy.entity;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import javax.xml.bind.annotation.XmlRootElement;
+@Slf4j
+@XmlRootElement(name = "EntityDynamicData")
+public class EntityDynamicData {
+	public EntityDynamicData() {
+
+	}
+
+	public EntityDynamicData(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String time;
+	Double value;
+
+	public String getTime() {
+		return time;
+	}
+
+	public void setTime(String time) {
+		this.time = time;
+	}
+
+	public Double getValue() {
+		return value;
+	}
+
+	public void setValue(Double value) {
+		this.value = value;
+	}
+
+}

+ 34 - 0
src/main/java/com/persagy/entity/EntityDynamicDataArray.java

@@ -0,0 +1,34 @@
+package com.persagy.entity;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import javax.xml.bind.annotation.XmlRootElement;
+@Slf4j
+@XmlRootElement(name = "EntityDynamicDataArray")
+public class EntityDynamicDataArray {
+	public EntityDynamicDataArray() {
+
+	}
+
+	public EntityDynamicDataArray(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	EntityDynamicData[] dataArray;
+
+	public EntityDynamicData[] getDataArray() {
+		return dataArray;
+	}
+
+	public void setDataArray(EntityDynamicData[] dataArray) {
+		this.dataArray = dataArray;
+	}
+}

+ 53 - 0
src/main/java/com/persagy/entity/EntitySimple.java

@@ -0,0 +1,53 @@
+package com.persagy.entity;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import javax.xml.bind.annotation.XmlRootElement;
+@Slf4j
+@XmlRootElement(name = "EntitySimple")
+public class EntitySimple {
+	public EntitySimple() {
+
+	}
+
+	public EntitySimple(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	Long id;
+	String name;
+	Double data;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public Double getData() {
+		return data;
+	}
+
+	public void setData(Double data) {
+		this.data = data;
+	}
+
+}

+ 107 - 0
src/main/java/com/persagy/entity/WSBatchItem.java

@@ -0,0 +1,107 @@
+package com.persagy.entity;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import javax.xml.bind.annotation.XmlRootElement;
+@Slf4j
+@XmlRootElement(name = "WSBatchItem")
+public class WSBatchItem {
+	public WSBatchItem() {
+
+	}
+
+	public WSBatchItem(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String meter;// command=data_near/flag_near/data_service/write_fjd_flag
+	Long funcid;// command=data_near/flag_near/data_service/write_fjd_flag
+	String energyModelSign;// command=data_energy
+	String energyModelNodeSign;// command=data_energy
+	String time_period;// command=data_near/flag_near/data_service/data_energy
+	String data_time_from;// command=data_near/flag_near/data_service/data_energy
+	String data_time_to;// command=data_near/flag_near/data_service/data_energy
+	WSFlag[] flags;// command=flag_near/write_fjd_flag
+	WSData[] datas;// command=data_near/data_service/data_energy
+
+	public String getMeter() {
+		return meter;
+	}
+
+	public void setMeter(String meter) {
+		this.meter = meter;
+	}
+
+	public Long getFuncid() {
+		return funcid;
+	}
+
+	public void setFuncid(Long funcid) {
+		this.funcid = funcid;
+	}
+
+	public String getEnergyModelSign() {
+		return energyModelSign;
+	}
+
+	public void setEnergyModelSign(String energyModelSign) {
+		this.energyModelSign = energyModelSign;
+	}
+
+	public String getEnergyModelNodeSign() {
+		return energyModelNodeSign;
+	}
+
+	public void setEnergyModelNodeSign(String energyModelNodeSign) {
+		this.energyModelNodeSign = energyModelNodeSign;
+	}
+
+	public String getTime_period() {
+		return time_period;
+	}
+
+	public void setTime_period(String time_period) {
+		this.time_period = time_period;
+	}
+
+	public String getData_time_from() {
+		return data_time_from;
+	}
+
+	public void setData_time_from(String data_time_from) {
+		this.data_time_from = data_time_from;
+	}
+
+	public String getData_time_to() {
+		return data_time_to;
+	}
+
+	public void setData_time_to(String data_time_to) {
+		this.data_time_to = data_time_to;
+	}
+
+	public WSFlag[] getFlags() {
+		return flags;
+	}
+
+	public void setFlags(WSFlag[] flags) {
+		this.flags = flags;
+	}
+
+	public WSData[] getDatas() {
+		return datas;
+	}
+
+	public void setDatas(WSData[] datas) {
+		this.datas = datas;
+	}
+
+}

+ 61 - 0
src/main/java/com/persagy/entity/WSBatchParam.java

@@ -0,0 +1,61 @@
+package com.persagy.entity;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import javax.xml.bind.annotation.XmlRootElement;
+@Slf4j
+@XmlRootElement(name = "WSBatchParam")
+public class WSBatchParam {
+	public WSBatchParam() {
+
+	}
+
+	public WSBatchParam(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String command;
+	String building;// command=data_near/flag_near/data_service/data_energy/write_fjd_flag
+	Long compute_round;// write_fjd_flag
+	WSBatchItem[] items;
+
+	public String getCommand() {
+		return command;
+	}
+
+	public void setCommand(String command) {
+		this.command = command;
+	}
+
+	public String getBuilding() {
+		return building;
+	}
+
+	public void setBuilding(String building) {
+		this.building = building;
+	}
+
+	public Long getCompute_round() {
+		return compute_round;
+	}
+
+	public void setCompute_round(Long compute_round) {
+		this.compute_round = compute_round;
+	}
+
+	public WSBatchItem[] getItems() {
+		return items;
+	}
+
+	public void setItems(WSBatchItem[] items) {
+		this.items = items;
+	}
+}

+ 62 - 0
src/main/java/com/persagy/entity/WSBuildingData.java

@@ -0,0 +1,62 @@
+package com.persagy.entity;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import javax.xml.bind.annotation.XmlRootElement;
+@Slf4j
+@XmlRootElement(name = "WSBuildingData")
+public class WSBuildingData {
+	public WSBuildingData() {
+
+	}
+
+	public WSBuildingData(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String meter;
+	Long funcid;
+	String data_time;
+	Double data_value;
+
+	public String getMeter() {
+		return meter;
+	}
+
+	public void setMeter(String meter) {
+		this.meter = meter;
+	}
+
+	public Long getFuncid() {
+		return funcid;
+	}
+
+	public void setFuncid(Long funcid) {
+		this.funcid = funcid;
+	}
+
+	public String getData_time() {
+		return data_time;
+	}
+
+	public void setData_time(String data_time) {
+		this.data_time = data_time;
+	}
+
+	public Double getData_value() {
+		return data_value;
+	}
+
+	public void setData_value(Double data_value) {
+		this.data_value = data_value;
+	}
+
+}

+ 61 - 0
src/main/java/com/persagy/entity/WSData.java

@@ -0,0 +1,61 @@
+package com.persagy.entity;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import javax.xml.bind.annotation.XmlRootElement;
+@Slf4j
+@XmlRootElement(name = "WSData")
+public class WSData {
+	public WSData() {
+
+	}
+
+	public WSData(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String data_time;
+	Double data_value;
+	String label_flag;
+	String data_from;
+
+	public String getData_time() {
+		return data_time;
+	}
+
+	public void setData_time(String data_time) {
+		this.data_time = data_time;
+	}
+
+	public Double getData_value() {
+		return data_value;
+	}
+
+	public void setData_value(Double data_value) {
+		this.data_value = data_value;
+	}
+
+	public String getLabel_flag() {
+		return label_flag;
+	}
+
+	public void setLabel_flag(String label_flag) {
+		this.label_flag = label_flag;
+	}
+
+	public String getData_from() {
+		return data_from;
+	}
+
+	public void setData_from(String data_from) {
+		this.data_from = data_from;
+	}
+}

+ 52 - 0
src/main/java/com/persagy/entity/WSData_fjd_1.java

@@ -0,0 +1,52 @@
+package com.persagy.entity;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import javax.xml.bind.annotation.XmlRootElement;
+@Slf4j
+@XmlRootElement(name = "WSData_fjd_1")
+public class WSData_fjd_1 {
+	public WSData_fjd_1() {
+
+	}
+
+	public WSData_fjd_1(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String data_time;
+	Long label2;
+	Double meter_cleaned2;
+
+	public String getData_time() {
+		return data_time;
+	}
+
+	public void setData_time(String data_time) {
+		this.data_time = data_time;
+	}
+
+	public Long getLabel2() {
+		return label2;
+	}
+
+	public void setLabel2(Long label2) {
+		this.label2 = label2;
+	}
+
+	public Double getMeter_cleaned2() {
+		return meter_cleaned2;
+	}
+
+	public void setMeter_cleaned2(Double meter_cleaned2) {
+		this.meter_cleaned2 = meter_cleaned2;
+	}
+}

+ 61 - 0
src/main/java/com/persagy/entity/WSData_fjd_2.java

@@ -0,0 +1,61 @@
+package com.persagy.entity;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import javax.xml.bind.annotation.XmlRootElement;
+@Slf4j
+@XmlRootElement(name = "WSData_fjd_2")
+public class WSData_fjd_2 {
+	public WSData_fjd_2() {
+
+	}
+
+	public WSData_fjd_2(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String data_time;
+	Long data_flag;
+	String time_period;
+	Double data_value;
+
+	public String getData_time() {
+		return data_time;
+	}
+
+	public void setData_time(String data_time) {
+		this.data_time = data_time;
+	}
+
+	public Long getData_flag() {
+		return data_flag;
+	}
+
+	public void setData_flag(Long data_flag) {
+		this.data_flag = data_flag;
+	}
+
+	public String getTime_period() {
+		return time_period;
+	}
+
+	public void setTime_period(String time_period) {
+		this.time_period = time_period;
+	}
+
+	public Double getData_value() {
+		return data_value;
+	}
+
+	public void setData_value(Double data_value) {
+		this.data_value = data_value;
+	}
+}

+ 81 - 0
src/main/java/com/persagy/entity/WSEntity_change.java

@@ -0,0 +1,81 @@
+package com.persagy.entity;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+@Slf4j
+@XmlRootElement(name = "WSEntity_change")
+public class WSEntity_change {
+	public WSEntity_change() {
+
+	}
+
+	public WSEntity_change(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String building;
+	String meter;
+	Long funcid;
+	String receivetime;
+	Double data_old;
+	Double data_new;
+
+	public Double getData_new() {
+		return data_new;
+	}
+
+	public void setData_new(Double data_new) {
+		this.data_new = data_new;
+	}
+
+	public String getBuilding() {
+		return building;
+	}
+
+	public void setBuilding(String building) {
+		this.building = building;
+	}
+
+	public String getMeter() {
+		return meter;
+	}
+
+	public void setMeter(String meter) {
+		this.meter = meter;
+	}
+
+	public Long getFuncid() {
+		return funcid;
+	}
+
+	public void setFuncid(Long funcid) {
+		this.funcid = funcid;
+	}
+
+	public String getReceivetime() {
+		return receivetime;
+	}
+
+	public void setReceivetime(String receivetime) {
+		this.receivetime = receivetime;
+	}
+
+	public Double getData_old() {
+		return data_old;
+	}
+
+	public void setData_old(Double data_old) {
+		this.data_old = data_old;
+	}
+
+}

+ 44 - 0
src/main/java/com/persagy/entity/WSEntity_changes.java

@@ -0,0 +1,44 @@
+package com.persagy.entity;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import javax.xml.bind.annotation.XmlRootElement;
+@Slf4j
+@XmlRootElement(name = "WSEntity_changes")
+public class WSEntity_changes {
+	public WSEntity_changes() {
+
+	}
+
+	public WSEntity_changes(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String building;
+	WSEntity_change[] data_array;
+
+	public String getBuilding() {
+		return building;
+	}
+
+	public void setBuilding(String building) {
+		this.building = building;
+	}
+
+	public WSEntity_change[] getData_array() {
+		return data_array;
+	}
+
+	public void setData_array(WSEntity_change[] data_array) {
+		this.data_array = data_array;
+	}
+
+}

+ 63 - 0
src/main/java/com/persagy/entity/WSEntity_ci_status.java

@@ -0,0 +1,63 @@
+package com.persagy.entity;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+@Slf4j
+@XmlRootElement(name = "Entity_ci_status")
+public class WSEntity_ci_status {
+	public WSEntity_ci_status() {
+
+	}
+
+	public WSEntity_ci_status(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String object_sign;
+	String instance_name;
+	String status_request;
+	String status_current;
+
+	public String getObject_sign() {
+		return object_sign;
+	}
+
+	public void setObject_sign(String object_sign) {
+		this.object_sign = object_sign;
+	}
+
+	public String getInstance_name() {
+		return instance_name;
+	}
+
+	public void setInstance_name(String instance_name) {
+		this.instance_name = instance_name;
+	}
+
+	public String getStatus_request() {
+		return status_request;
+	}
+
+	public void setStatus_request(String status_request) {
+		this.status_request = status_request;
+	}
+
+	public String getStatus_current() {
+		return status_current;
+	}
+
+	public void setStatus_current(String status_current) {
+		this.status_current = status_current;
+	}
+
+}

+ 70 - 0
src/main/java/com/persagy/entity/WSEntity_data.java

@@ -0,0 +1,70 @@
+package com.persagy.entity;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import javax.xml.bind.annotation.XmlRootElement;
+@Slf4j
+@XmlRootElement(name = "WSEntity_data")
+public class WSEntity_data {
+	public WSEntity_data() {
+
+	}
+
+	public WSEntity_data(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String receivetime;
+	Double data;
+	String data_type;
+	String time_from;
+	String time_to;
+
+	public String getReceivetime() {
+		return receivetime;
+	}
+
+	public void setReceivetime(String receivetime) {
+		this.receivetime = receivetime;
+	}
+
+	public Double getData() {
+		return data;
+	}
+
+	public void setData(Double data) {
+		this.data = data;
+	}
+
+	public String getData_type() {
+		return data_type;
+	}
+
+	public void setData_type(String data_type) {
+		this.data_type = data_type;
+	}
+
+	public String getTime_from() {
+		return time_from;
+	}
+
+	public void setTime_from(String time_from) {
+		this.time_from = time_from;
+	}
+
+	public String getTime_to() {
+		return time_to;
+	}
+
+	public void setTime_to(String time_to) {
+		this.time_to = time_to;
+	}
+}

+ 63 - 0
src/main/java/com/persagy/entity/WSEntity_datas.java

@@ -0,0 +1,63 @@
+package com.persagy.entity;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+@Slf4j
+@XmlRootElement(name = "WSEntity_datas")
+public class WSEntity_datas {
+	public WSEntity_datas() {
+
+	}
+
+	public WSEntity_datas(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String building;
+	String meter;
+	Long funcid;
+	WSEntity_data[] data_array;
+
+	public String getBuilding() {
+		return building;
+	}
+
+	public void setBuilding(String building) {
+		this.building = building;
+	}
+
+	public String getMeter() {
+		return meter;
+	}
+
+	public void setMeter(String meter) {
+		this.meter = meter;
+	}
+
+	public Long getFuncid() {
+		return funcid;
+	}
+
+	public void setFuncid(Long funcid) {
+		this.funcid = funcid;
+	}
+
+	public WSEntity_data[] getData_array() {
+		return data_array;
+	}
+
+	public void setData_array(WSEntity_data[] data_array) {
+		this.data_array = data_array;
+	}
+
+}

+ 44 - 0
src/main/java/com/persagy/entity/WSEntity_datas_batch.java

@@ -0,0 +1,44 @@
+package com.persagy.entity;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import javax.xml.bind.annotation.XmlRootElement;
+@Slf4j
+@XmlRootElement(name = "WSEntity_datas_batch")
+public class WSEntity_datas_batch {
+	public WSEntity_datas_batch() {
+
+	}
+
+	public WSEntity_datas_batch(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String building;
+	WSEntity_datas[] data_array;
+
+	public String getBuilding() {
+		return building;
+	}
+
+	public void setBuilding(String building) {
+		this.building = building;
+	}
+
+	public WSEntity_datas[] getData_array() {
+		return data_array;
+	}
+
+	public void setData_array(WSEntity_datas[] data_array) {
+		this.data_array = data_array;
+	}
+
+}

+ 90 - 0
src/main/java/com/persagy/entity/WSEntity_fjd_1.java

@@ -0,0 +1,90 @@
+package com.persagy.entity;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+@Slf4j
+@XmlRootElement(name = "WSEntity_fjd_1")
+public class WSEntity_fjd_1 {
+	public WSEntity_fjd_1() {
+
+	}
+
+	public WSEntity_fjd_1(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String building;
+	Long compute_round;
+	String compute_time_from;
+	String compute_time_to;
+	Long fjd_compute_round_from;
+	Long fjd_compute_round_to;
+	Long is_finished;
+
+	public String getBuilding() {
+		return building;
+	}
+
+	public void setBuilding(String building) {
+		this.building = building;
+	}
+
+	public Long getCompute_round() {
+		return compute_round;
+	}
+
+	public void setCompute_round(Long compute_round) {
+		this.compute_round = compute_round;
+	}
+
+	public String getCompute_time_from() {
+		return compute_time_from;
+	}
+
+	public void setCompute_time_from(String compute_time_from) {
+		this.compute_time_from = compute_time_from;
+	}
+
+	public String getCompute_time_to() {
+		return compute_time_to;
+	}
+
+	public void setCompute_time_to(String compute_time_to) {
+		this.compute_time_to = compute_time_to;
+	}
+
+	public Long getFjd_compute_round_from() {
+		return fjd_compute_round_from;
+	}
+
+	public void setFjd_compute_round_from(Long fjd_compute_round_from) {
+		this.fjd_compute_round_from = fjd_compute_round_from;
+	}
+
+	public Long getFjd_compute_round_to() {
+		return fjd_compute_round_to;
+	}
+
+	public void setFjd_compute_round_to(Long fjd_compute_round_to) {
+		this.fjd_compute_round_to = fjd_compute_round_to;
+	}
+
+	public Long getIs_finished() {
+		return is_finished;
+	}
+
+	public void setIs_finished(Long is_finished) {
+		this.is_finished = is_finished;
+	}
+
+}

+ 163 - 0
src/main/java/com/persagy/entity/WSEntity_point.java

@@ -0,0 +1,163 @@
+package com.persagy.entity;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+@Slf4j
+@XmlRootElement(name = "WSEntity_point")
+public class WSEntity_point {
+	public WSEntity_point() {
+
+	}
+
+	public WSEntity_point(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String meter;
+	Long funcid;
+	String data_type;
+	String collect_cycle;
+
+	String system;
+	String source;
+	String address_1;
+	String ip_port;
+	String address_2;
+	String address_3;
+	String address_4;
+	String unit;
+	String remark_1;
+	String remark_2;
+	String remark_3;
+
+	public String getMeter() {
+		return meter;
+	}
+
+	public void setMeter(String meter) {
+		this.meter = meter;
+	}
+
+	public Long getFuncid() {
+		return funcid;
+	}
+
+	public void setFuncid(Long funcid) {
+		this.funcid = funcid;
+	}
+
+	public String getData_type() {
+		return data_type;
+	}
+
+	public void setData_type(String data_type) {
+		this.data_type = data_type;
+	}
+
+	public String getCollect_cycle() {
+		return collect_cycle;
+	}
+
+	public void setCollect_cycle(String collect_cycle) {
+		this.collect_cycle = collect_cycle;
+	}
+
+	public String getSystem() {
+		return system;
+	}
+
+	public void setSystem(String system) {
+		this.system = system;
+	}
+
+	public String getSource() {
+		return source;
+	}
+
+	public void setSource(String source) {
+		this.source = source;
+	}
+
+	public String getAddress_1() {
+		return address_1;
+	}
+
+	public void setAddress_1(String address_1) {
+		this.address_1 = address_1;
+	}
+
+	public String getIp_port() {
+		return ip_port;
+	}
+
+	public void setIp_port(String ip_port) {
+		this.ip_port = ip_port;
+	}
+
+	public String getAddress_2() {
+		return address_2;
+	}
+
+	public void setAddress_2(String address_2) {
+		this.address_2 = address_2;
+	}
+
+	public String getAddress_3() {
+		return address_3;
+	}
+
+	public void setAddress_3(String address_3) {
+		this.address_3 = address_3;
+	}
+
+	public String getAddress_4() {
+		return address_4;
+	}
+
+	public void setAddress_4(String address_4) {
+		this.address_4 = address_4;
+	}
+
+	public String getUnit() {
+		return unit;
+	}
+
+	public void setUnit(String unit) {
+		this.unit = unit;
+	}
+
+	public String getRemark_1() {
+		return remark_1;
+	}
+
+	public void setRemark_1(String remark_1) {
+		this.remark_1 = remark_1;
+	}
+
+	public String getRemark_2() {
+		return remark_2;
+	}
+
+	public void setRemark_2(String remark_2) {
+		this.remark_2 = remark_2;
+	}
+
+	public String getRemark_3() {
+		return remark_3;
+	}
+
+	public void setRemark_3(String remark_3) {
+		this.remark_3 = remark_3;
+	}
+
+}

+ 45 - 0
src/main/java/com/persagy/entity/WSEntity_points.java

@@ -0,0 +1,45 @@
+package com.persagy.entity;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+@Slf4j
+@XmlRootElement(name = "WSEntity_points")
+public class WSEntity_points {
+	public WSEntity_points() {
+
+	}
+
+	public WSEntity_points(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String building;
+	WSEntity_point[] points;
+
+	public String getBuilding() {
+		return building;
+	}
+
+	public void setBuilding(String building) {
+		this.building = building;
+	}
+
+	public WSEntity_point[] getPoints() {
+		return points;
+	}
+
+	public void setPoints(WSEntity_point[] points) {
+		this.points = points;
+	}
+
+}

+ 98 - 0
src/main/java/com/persagy/entity/WSEntity_report.java

@@ -0,0 +1,98 @@
+package com.persagy.entity;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import javax.xml.bind.annotation.XmlRootElement;
+@Slf4j
+@XmlRootElement(name = "WSEntity_report")
+public class WSEntity_report {
+	public WSEntity_report() {
+
+	}
+
+	public WSEntity_report(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String building;
+	String meter;
+	Long funcid;
+	String operation;
+	String receivetime;
+	String time_from;
+	String time_to;
+	Double data;
+
+	public String getBuilding() {
+		return building;
+	}
+
+	public void setBuilding(String building) {
+		this.building = building;
+	}
+
+	public String getMeter() {
+		return meter;
+	}
+
+	public void setMeter(String meter) {
+		this.meter = meter;
+	}
+
+	public Long getFuncid() {
+		return funcid;
+	}
+
+	public void setFuncid(Long funcid) {
+		this.funcid = funcid;
+	}
+
+	public String getOperation() {
+		return operation;
+	}
+
+	public void setOperation(String operation) {
+		this.operation = operation;
+	}
+
+	public String getReceivetime() {
+		return receivetime;
+	}
+
+	public void setReceivetime(String receivetime) {
+		this.receivetime = receivetime;
+	}
+
+	public String getTime_from() {
+		return time_from;
+	}
+
+	public void setTime_from(String time_from) {
+		this.time_from = time_from;
+	}
+
+	public String getTime_to() {
+		return time_to;
+	}
+
+	public void setTime_to(String time_to) {
+		this.time_to = time_to;
+	}
+
+	public Double getData() {
+		return data;
+	}
+
+	public void setData(Double data) {
+		this.data = data;
+	}
+
+}

+ 44 - 0
src/main/java/com/persagy/entity/WSEntity_report_batch.java

@@ -0,0 +1,44 @@
+package com.persagy.entity;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import javax.xml.bind.annotation.XmlRootElement;
+@Slf4j
+@XmlRootElement(name = "WSEntity_report_batch")
+public class WSEntity_report_batch {
+	public WSEntity_report_batch() {
+
+	}
+
+	public WSEntity_report_batch(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String building;
+	WSEntity_report[] data_array;
+
+	public String getBuilding() {
+		return building;
+	}
+
+	public void setBuilding(String building) {
+		this.building = building;
+	}
+
+	public WSEntity_report[] getData_array() {
+		return data_array;
+	}
+
+	public void setData_array(WSEntity_report[] data_array) {
+		this.data_array = data_array;
+	}
+
+}

+ 89 - 0
src/main/java/com/persagy/entity/WSEntity_report_change.java

@@ -0,0 +1,89 @@
+package com.persagy.entity;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import javax.xml.bind.annotation.XmlRootElement;
+@Slf4j
+@XmlRootElement(name = "WSEntity_report_change")
+public class WSEntity_report_change {
+	public WSEntity_report_change() {
+
+	}
+
+	public WSEntity_report_change(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String building;
+	String meter;
+	Long funcid;
+	String operation;
+	String receivetime;
+	Double data_old;
+	Double data_new;
+
+	public Double getData_old() {
+		return data_old;
+	}
+
+	public void setData_old(Double data_old) {
+		this.data_old = data_old;
+	}
+
+	public Double getData_new() {
+		return data_new;
+	}
+
+	public void setData_new(Double data_new) {
+		this.data_new = data_new;
+	}
+
+	public String getBuilding() {
+		return building;
+	}
+
+	public void setBuilding(String building) {
+		this.building = building;
+	}
+
+	public String getMeter() {
+		return meter;
+	}
+
+	public void setMeter(String meter) {
+		this.meter = meter;
+	}
+
+	public Long getFuncid() {
+		return funcid;
+	}
+
+	public void setFuncid(Long funcid) {
+		this.funcid = funcid;
+	}
+
+	public String getOperation() {
+		return operation;
+	}
+
+	public void setOperation(String operation) {
+		this.operation = operation;
+	}
+
+	public String getReceivetime() {
+		return receivetime;
+	}
+
+	public void setReceivetime(String receivetime) {
+		this.receivetime = receivetime;
+	}
+
+}

+ 71 - 0
src/main/java/com/persagy/entity/WSEntity_report_get_batch_param.java

@@ -0,0 +1,71 @@
+package com.persagy.entity;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import javax.xml.bind.annotation.XmlRootElement;
+@Slf4j
+@XmlRootElement(name = "WSEntity_report_get_batch_param")
+public class WSEntity_report_get_batch_param {
+	public WSEntity_report_get_batch_param() {
+
+	}
+
+	public WSEntity_report_get_batch_param(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String building;
+	String[] meter_array;
+	Long[] funcid_array;
+	String time_from;
+	String time_to;
+
+	public String getBuilding() {
+		return building;
+	}
+
+	public void setBuilding(String building) {
+		this.building = building;
+	}
+
+	public String[] getMeter_array() {
+		return meter_array;
+	}
+
+	public void setMeter_array(String[] meter_array) {
+		this.meter_array = meter_array;
+	}
+
+	public Long[] getFuncid_array() {
+		return funcid_array;
+	}
+
+	public void setFuncid_array(Long[] funcid_array) {
+		this.funcid_array = funcid_array;
+	}
+
+	public String getTime_from() {
+		return time_from;
+	}
+
+	public void setTime_from(String time_from) {
+		this.time_from = time_from;
+	}
+
+	public String getTime_to() {
+		return time_to;
+	}
+
+	public void setTime_to(String time_to) {
+		this.time_to = time_to;
+	}
+
+}

+ 71 - 0
src/main/java/com/persagy/entity/WSEntity_report_get_param.java

@@ -0,0 +1,71 @@
+package com.persagy.entity;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import javax.xml.bind.annotation.XmlRootElement;
+@Slf4j
+@XmlRootElement(name = "WSEntity_report_get_param")
+public class WSEntity_report_get_param {
+	public WSEntity_report_get_param() {
+
+	}
+
+	public WSEntity_report_get_param(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String building;
+	String meter;
+	Long funcid;
+	String time_from;
+	String time_to;
+
+	public String getBuilding() {
+		return building;
+	}
+
+	public void setBuilding(String building) {
+		this.building = building;
+	}
+
+	public String getMeter() {
+		return meter;
+	}
+
+	public void setMeter(String meter) {
+		this.meter = meter;
+	}
+
+	public Long getFuncid() {
+		return funcid;
+	}
+
+	public void setFuncid(Long funcid) {
+		this.funcid = funcid;
+	}
+
+	public String getTime_from() {
+		return time_from;
+	}
+
+	public void setTime_from(String time_from) {
+		this.time_from = time_from;
+	}
+
+	public String getTime_to() {
+		return time_to;
+	}
+
+	public void setTime_to(String time_to) {
+		this.time_to = time_to;
+	}
+
+}

+ 82 - 0
src/main/java/com/persagy/entity/WSEntity_tenant.java

@@ -0,0 +1,82 @@
+package com.persagy.entity;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+@Slf4j
+@XmlRootElement(name = "WSEntity_tenant")
+public class WSEntity_tenant {
+	public WSEntity_tenant() {
+
+	}
+
+	public WSEntity_tenant(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String building;
+	String sign;
+	String valid_time_from;
+	Boolean soft_enable;
+	Double soft_initial_yuer;
+
+	WSEntity_tenant_energy[] energys;
+
+	public String getBuilding() {
+		return building;
+	}
+
+	public void setBuilding(String building) {
+		this.building = building;
+	}
+
+	public String getSign() {
+		return sign;
+	}
+
+	public void setSign(String sign) {
+		this.sign = sign;
+	}
+
+	public String getValid_time_from() {
+		return valid_time_from;
+	}
+
+	public void setValid_time_from(String valid_time_from) {
+		this.valid_time_from = valid_time_from;
+	}
+
+	public Boolean getSoft_enable() {
+		return soft_enable;
+	}
+
+	public void setSoft_enable(Boolean soft_enable) {
+		this.soft_enable = soft_enable;
+	}
+
+	public Double getSoft_initial_yuer() {
+		return soft_initial_yuer;
+	}
+
+	public void setSoft_initial_yuer(Double soft_initial_yuer) {
+		this.soft_initial_yuer = soft_initial_yuer;
+	}
+
+	public WSEntity_tenant_energy[] getEnergys() {
+		return energys;
+	}
+
+	public void setEnergys(WSEntity_tenant_energy[] energys) {
+		this.energys = energys;
+	}
+
+}

+ 82 - 0
src/main/java/com/persagy/entity/WSEntity_tenant_energy.java

@@ -0,0 +1,82 @@
+package com.persagy.entity;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+@Slf4j
+@XmlRootElement(name = "WSEntity_tenant")
+public class WSEntity_tenant_energy {
+	public WSEntity_tenant_energy() {
+
+	}
+
+	public WSEntity_tenant_energy(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String energy_type;
+	String price_type;
+	Boolean soft_enable;
+	Double soft_initial_yuer;
+
+	String price_content;
+
+	WSEntity_tenant_energy_meter[] meters;
+
+	public String getEnergy_type() {
+		return energy_type;
+	}
+
+	public void setEnergy_type(String energy_type) {
+		this.energy_type = energy_type;
+	}
+
+	public String getPrice_type() {
+		return price_type;
+	}
+
+	public void setPrice_type(String price_type) {
+		this.price_type = price_type;
+	}
+
+	public Boolean getSoft_enable() {
+		return soft_enable;
+	}
+
+	public void setSoft_enable(Boolean soft_enable) {
+		this.soft_enable = soft_enable;
+	}
+
+	public Double getSoft_initial_yuer() {
+		return soft_initial_yuer;
+	}
+
+	public void setSoft_initial_yuer(Double soft_initial_yuer) {
+		this.soft_initial_yuer = soft_initial_yuer;
+	}
+
+	public String getPrice_content() {
+		return price_content;
+	}
+
+	public void setPrice_content(String price_content) {
+		this.price_content = price_content;
+	}
+
+	public WSEntity_tenant_energy_meter[] getMeters() {
+		return meters;
+	}
+
+	public void setMeters(WSEntity_tenant_energy_meter[] meters) {
+		this.meters = meters;
+	}
+}

+ 62 - 0
src/main/java/com/persagy/entity/WSEntity_tenant_energy_meter.java

@@ -0,0 +1,62 @@
+package com.persagy.entity;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+@Slf4j
+@XmlRootElement(name = "WSEntity_tenant")
+public class WSEntity_tenant_energy_meter {
+	public WSEntity_tenant_energy_meter() {
+
+	}
+
+	public WSEntity_tenant_energy_meter(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String meter_sign;
+	Double share_ratio;
+	Double transformer_ratio;
+	WSEntity_point[] points;
+
+	public String getMeter_sign() {
+		return meter_sign;
+	}
+
+	public void setMeter_sign(String meter_sign) {
+		this.meter_sign = meter_sign;
+	}
+
+	public Double getShare_ratio() {
+		return share_ratio;
+	}
+
+	public void setShare_ratio(Double share_ratio) {
+		this.share_ratio = share_ratio;
+	}
+
+	public Double getTransformer_ratio() {
+		return transformer_ratio;
+	}
+
+	public void setTransformer_ratio(Double transformer_ratio) {
+		this.transformer_ratio = transformer_ratio;
+	}
+
+	public WSEntity_point[] getPoints() {
+		return points;
+	}
+
+	public void setPoints(WSEntity_point[] points) {
+		this.points = points;
+	}
+}

+ 45 - 0
src/main/java/com/persagy/entity/WSEntity_tenants.java

@@ -0,0 +1,45 @@
+package com.persagy.entity;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import javax.xml.bind.annotation.XmlRootElement;
+@Slf4j
+@XmlRootElement(name = "WSEntity_tenants")
+public class WSEntity_tenants {
+	public WSEntity_tenants() {
+
+	}
+
+	public WSEntity_tenants(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String building;
+
+	WSEntity_tenant[] tenants;
+
+	public String getBuilding() {
+		return building;
+	}
+
+	public void setBuilding(String building) {
+		this.building = building;
+	}
+
+	public WSEntity_tenant[] getTenants() {
+		return tenants;
+	}
+
+	public void setTenants(WSEntity_tenant[] tenants) {
+		this.tenants = tenants;
+	}
+
+}

+ 44 - 0
src/main/java/com/persagy/entity/WSFlag.java

@@ -0,0 +1,44 @@
+package com.persagy.entity;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+@Slf4j
+@XmlRootElement(name = "WSFlag")
+public class WSFlag {
+	public WSFlag() {
+
+	}
+
+	public WSFlag(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String data_time;
+	Long rely_flag;
+
+	public String getData_time() {
+		return data_time;
+	}
+
+	public void setData_time(String data_time) {
+		this.data_time = data_time;
+	}
+
+	public Long getRely_flag() {
+		return rely_flag;
+	}
+
+	public void setRely_flag(Long rely_flag) {
+		this.rely_flag = rely_flag;
+	}
+}

+ 200 - 0
src/main/java/com/persagy/entity/WSParam.java

@@ -0,0 +1,200 @@
+package com.persagy.entity;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+@Slf4j
+@XmlRootElement(name = "WSParam")
+public class WSParam {
+	public WSParam() {
+
+	}
+
+	public WSParam(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	// param items
+	String command;
+	String status;
+	String building;// command=list_point/data_near/flag_near/data_energy/begin_fjd_1/read_fjd_1/write_fjd_1/end_fjd_1/begin_fjd_flag/write_fjd_flag/end_fjd_flag
+	Long compute_round;// read_fjd_1/write_fjd_1/end_fjd_1/write_fjd_flag/end_fjd_flag
+	String meter;// command=data_near/flag_near/read_fjd_1/write_fjd_1/write_fjd_flag
+	Long funcid;// command=data_near/flag_near/read_fjd_1/write_fjd_1/write_fjd_flag
+	String energyModelSign;// command=data_energy
+	String energyModelNodeSign;// command=data_energy
+	String time_period;// command=data_near/flag_near/data_energy
+	String data_time_from;// command=data_near/flag_near/data_energy/begin_fjd_flag
+	String data_time_to;// command=data_near/flag_near/data_energy/begin_fjd_flag
+	WSData_fjd_1[] datas_fjd_1;// command=write_fjd_1
+	WSData_fjd_2[] datas_fjd_2;// command=write_fjd_2
+	WSFlag[] flags;// command=flag_near/write_fjd_flag
+
+	// return items
+	String[] buildings;// command=list_building
+	WSPoint[] points;// command=list_point/read_fjd_1
+	WSData[] datas;// command=data_near/data_energy
+	WSBuildingData[] buildingdatas;
+	WSEntity_fjd_1 fjd_1;// command=begin_fjd_1
+
+	public String getCommand() {
+		return command;
+	}
+
+	public void setCommand(String command) {
+		this.command = command;
+	}
+
+	public String getStatus() {
+		return status;
+	}
+
+	public void setStatus(String status) {
+		this.status = status;
+	}
+
+	public String getBuilding() {
+		return building;
+	}
+
+	public void setBuilding(String building) {
+		this.building = building;
+	}
+
+	public Long getCompute_round() {
+		return compute_round;
+	}
+
+	public void setCompute_round(Long compute_round) {
+		this.compute_round = compute_round;
+	}
+
+	public String getMeter() {
+		return meter;
+	}
+
+	public void setMeter(String meter) {
+		this.meter = meter;
+	}
+
+	public Long getFuncid() {
+		return funcid;
+	}
+
+	public void setFuncid(Long funcid) {
+		this.funcid = funcid;
+	}
+
+	public String getEnergyModelSign() {
+		return energyModelSign;
+	}
+
+	public void setEnergyModelSign(String energyModelSign) {
+		this.energyModelSign = energyModelSign;
+	}
+
+	public String getEnergyModelNodeSign() {
+		return energyModelNodeSign;
+	}
+
+	public void setEnergyModelNodeSign(String energyModelNodeSign) {
+		this.energyModelNodeSign = energyModelNodeSign;
+	}
+
+	public String getTime_period() {
+		return time_period;
+	}
+
+	public void setTime_period(String time_period) {
+		this.time_period = time_period;
+	}
+
+	public String getData_time_from() {
+		return data_time_from;
+	}
+
+	public void setData_time_from(String data_time_from) {
+		this.data_time_from = data_time_from;
+	}
+
+	public String getData_time_to() {
+		return data_time_to;
+	}
+
+	public void setData_time_to(String data_time_to) {
+		this.data_time_to = data_time_to;
+	}
+
+	public WSData_fjd_1[] getDatas_fjd_1() {
+		return datas_fjd_1;
+	}
+
+	public void setDatas_fjd_1(WSData_fjd_1[] datas_fjd_1) {
+		this.datas_fjd_1 = datas_fjd_1;
+	}
+
+	public WSData_fjd_2[] getDatas_fjd_2() {
+		return datas_fjd_2;
+	}
+
+	public void setDatas_fjd_2(WSData_fjd_2[] datas_fjd_2) {
+		this.datas_fjd_2 = datas_fjd_2;
+	}
+
+	public WSFlag[] getFlags() {
+		return flags;
+	}
+
+	public void setFlags(WSFlag[] flags) {
+		this.flags = flags;
+	}
+
+	public String[] getBuildings() {
+		return buildings;
+	}
+
+	public void setBuildings(String[] buildings) {
+		this.buildings = buildings;
+	}
+
+	public WSPoint[] getPoints() {
+		return points;
+	}
+
+	public void setPoints(WSPoint[] points) {
+		this.points = points;
+	}
+
+	public WSData[] getDatas() {
+		return datas;
+	}
+
+	public void setDatas(WSData[] datas) {
+		this.datas = datas;
+	}
+
+	public WSBuildingData[] getBuildingdatas() {
+		return buildingdatas;
+	}
+
+	public void setBuildingdatas(WSBuildingData[] buildingdatas) {
+		this.buildingdatas = buildingdatas;
+	}
+
+	public WSEntity_fjd_1 getFjd_1() {
+		return fjd_1;
+	}
+
+	public void setFjd_1(WSEntity_fjd_1 fjd_1) {
+		this.fjd_1 = fjd_1;
+	}
+}

+ 81 - 0
src/main/java/com/persagy/entity/WSPoint.java

@@ -0,0 +1,81 @@
+package com.persagy.entity;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+@Slf4j
+@XmlRootElement(name = "WSPoint")
+public class WSPoint {
+	public WSPoint() {
+
+	}
+
+	public WSPoint(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String building;
+	String meter;
+	Long funcid;
+	String data_type;
+	String collect_cycle;
+	String first_compute_time;
+
+	public String getFirst_compute_time() {
+		return first_compute_time;
+	}
+
+	public void setFirst_compute_time(String first_compute_time) {
+		this.first_compute_time = first_compute_time;
+	}
+
+	public String getBuilding() {
+		return building;
+	}
+
+	public void setBuilding(String building) {
+		this.building = building;
+	}
+
+	public String getMeter() {
+		return meter;
+	}
+
+	public void setMeter(String meter) {
+		this.meter = meter;
+	}
+
+	public Long getFuncid() {
+		return funcid;
+	}
+
+	public void setFuncid(Long funcid) {
+		this.funcid = funcid;
+	}
+
+	public String getData_type() {
+		return data_type;
+	}
+
+	public void setData_type(String data_type) {
+		this.data_type = data_type;
+	}
+
+	public String getCollect_cycle() {
+		return collect_cycle;
+	}
+
+	public void setCollect_cycle(String collect_cycle) {
+		this.collect_cycle = collect_cycle;
+	}
+
+}

+ 9 - 0
src/main/java/com/persagy/service/CalculateUnit_tmp.java

@@ -0,0 +1,9 @@
+package com.persagy.service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class CalculateUnit_tmp {
+	public String sign;
+	public List<String> formulaList = new ArrayList<String>();
+}

+ 16 - 0
src/main/java/com/persagy/service/EnergyItem_tmp.java

@@ -0,0 +1,16 @@
+package com.persagy.service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class EnergyItem_tmp {
+	public String sign;
+	public String name;
+	public String parentSign;
+	public EnergyItem_tmp parent;
+	public List<EnergyItem_tmp> children = new ArrayList<EnergyItem_tmp>();
+	public boolean isExpression = false;
+	public boolean initialized = false;
+	public String formula;
+	public List<String> cuList = new ArrayList<String>();
+}

+ 12 - 0
src/main/java/com/persagy/service/EnergyModel_tmp.java

@@ -0,0 +1,12 @@
+package com.persagy.service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class EnergyModel_tmp {
+	public String sign;
+	public String name;
+	public String building;
+	public String energyType;
+	public List<EnergyItem_tmp> itemList = new ArrayList<EnergyItem_tmp>();
+}

+ 322 - 0
src/main/java/com/persagy/service/IService1.java

@@ -0,0 +1,322 @@
+package com.persagy.service;
+
+import javax.jws.WebResult;
+import javax.jws.WebService;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+
+import com.persagy.entity.EntitySimple;
+import com.persagy.entity.WSEntity_changes;
+import com.persagy.entity.WSEntity_ci_status;
+import com.persagy.entity.WSEntity_datas;
+import com.persagy.entity.WSEntity_datas_batch;
+import com.persagy.entity.WSEntity_points;
+import com.persagy.entity.WSEntity_report;
+import com.persagy.entity.WSEntity_report_batch;
+import com.persagy.entity.WSEntity_report_change;
+import com.persagy.entity.WSEntity_report_get_batch_param;
+import com.persagy.wsentity.SSurvey;
+import com.persagy.wsentity.SSurveyResult;
+import com.persagy.wsentity2.TSurvey;
+import com.persagy.wsentity2.TSurveyResult;
+import com.sagacloud.util.compute_engine.entity.Entity_ci_instance;
+import com.sagacloud.util.compute_engine.entity.Entity_ci_instances;
+
+@WebService
+@Path("/Service1_RS/")
+@Produces({ "application/json" })
+public interface IService1 {
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("GetSimple/{param}")
+	public EntitySimple GetSimple(@PathParam("param") EntitySimple param);
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("ci_instance_GetAll")
+	public Entity_ci_instances ci_instance_GetAll() throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("ci_instance_Get/{object_sign}/{instance_name}")
+	public Entity_ci_instance ci_instance_Get(@PathParam("object_sign") String object_sign, @PathParam("instance_name") String instance_name)
+			throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("ci_instance_Delete/{object_sign}/{instance_name}")
+	public void ci_instance_Delete(@PathParam("object_sign") String object_sign, @PathParam("instance_name") String instance_name) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("ci_instance_Update/{instance}")
+	public void ci_instance_Update(@PathParam("instance") Entity_ci_instance instance) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("ci_instance_Request/{object_sign}/{instance_name}/{status_request}")
+	public void ci_instance_Request(@PathParam("object_sign") String object_sign, @PathParam("instance_name") String instance_name,
+			@PathParam("status_request") String status_request) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("ci_instance_interval/{object_sign}/{instance_name}/{interval}")
+	public void ci_instance_interval(@PathParam("object_sign") String object_sign, @PathParam("instance_name") String instance_name,
+			@PathParam("interval") long interval) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("ci_instance_status/{object_sign}/{instance_name}")
+	public WSEntity_ci_status ci_instance_status(@PathParam("object_sign") String object_sign, @PathParam("instance_name") String instance_name)
+			throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("Survey_Delete/{survey}")
+	public void Survey_Delete(@PathParam("survey") SSurvey survey) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("Survey_Update/{survey}")
+	public SSurveyResult Survey_Update(@PathParam("survey") SSurvey survey) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("Survey_Delete2/{survey}")
+	public void Survey_Delete2(@PathParam("survey") TSurvey survey) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("Survey_Update2/{survey}")
+	public TSurveyResult Survey_Update2(@PathParam("survey") TSurvey survey) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("servicedata_recompute/{object_sign}/{compute_time_from}")
+	public String servicedata_recompute(@PathParam("object_sign") String object_sign, @PathParam("compute_time_from") String compute_time_from)
+			throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("EMS_recompute/{object_sign}/{compute_time_from}")
+	public String EMS_recompute(@PathParam("object_sign") String object_sign, @PathParam("compute_time_from") String compute_time_from)
+			throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("fjd_recompute/{building}/{compute_time}")
+	public String fjd_recompute(@PathParam("building") String building, @PathParam("compute_time") String compute_time) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("fjd_0_buildingcomputetime/{building}")
+	public String fjd_0_buildingcomputetime(@PathParam("building") String building) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("fjd_0_buildingcomputetime_delete/{building}")
+	public void fjd_0_buildingcomputetime_delete(@PathParam("building") String building) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("fjd_0_compute_request/{building}/{compute_time_from}/{compute_time_to}")
+	public void fjd_0_compute_request(@PathParam("building") String building, @PathParam("compute_time_from") String compute_time_from,
+			@PathParam("compute_time_to") String compute_time_to) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("fjd_0_compute_request_by_model/{building}/{modelSign}/{compute_time_from}/{compute_time_to}")
+	public void fjd_0_compute_request_by_model(@PathParam("building") String building, @PathParam("modelSign") String modelSign,
+			@PathParam("compute_time_from") String compute_time_from, @PathParam("compute_time_to") String compute_time_to) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("get_dy_pointlist/{building}")
+	public WSEntity_points get_dy_pointlist(@PathParam("building") String building) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("get_dy_reportpointlist/{building}")
+	public WSEntity_points get_dy_reportpointlist(@PathParam("building") String building) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("ini_fjd_0_buildingcomputetime/{building}/{compute_time}")
+	public void ini_fjd_0_buildingcomputetime(@PathParam("building") String building, @PathParam("compute_time") String compute_time)
+			throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("ini_dy_pointlist/{points}")
+	public void ini_dy_pointlist(@PathParam("points") WSEntity_points points) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("set_fjd_0_buildingcomputetime/{building}/{compute_time}")
+	public void set_fjd_0_buildingcomputetime(@PathParam("building") String building, @PathParam("compute_time") String compute_time)
+			throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("set_fjd_0_buildingcomputetime_by_model/{building}/{energyModelSign}/{compute_time}")
+	public String set_fjd_0_buildingcomputetime_by_model(@PathParam("building") String building, @PathParam("energyModelSign") String energyModelSign,
+			@PathParam("compute_time") String compute_time) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("set_dy_pointlist/{points}")
+	public String set_dy_pointlist(@PathParam("points") WSEntity_points points) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("set_dy_reportpointlist/{points}")
+	public String set_dy_reportpointlist(@PathParam("points") WSEntity_points points) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("report/{pointdata}")
+	public void report(@PathParam("pointdata") WSEntity_report pointdata) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("report_batch/{data_batch}")
+	public void report_batch(@PathParam("data_batch") WSEntity_report_batch data_batch) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("reportenergy/{pointdata}")
+	public void reportenergy(@PathParam("pointdata") WSEntity_report pointdata) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("reportenergy_batch/{data_batch}")
+	public void reportenergy_batch(@PathParam("data_batch") WSEntity_report_batch data_batch) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("get_reportdatalist/{building}/{meter}/{funcid}/{time_from}/{time_to}")
+	public WSEntity_datas get_reportdatalist(@PathParam("building") String building, @PathParam("meter") String meter,
+			@PathParam("funcid") Long funcid, @PathParam("time_from") String time_from, @PathParam("time_to") String time_to) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("get_reportdatalist_batch/{param_entity}")
+	public WSEntity_datas_batch get_reportdatalist_batch(@PathParam("param_entity") WSEntity_report_get_batch_param param_entity) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("get_reportenergylist/{building}/{meter}/{funcid}/{time_from}/{time_to}")
+	public WSEntity_datas get_reportenergylist(@PathParam("building") String building, @PathParam("meter") String meter,
+			@PathParam("funcid") Long funcid, @PathParam("time_from") String time_from, @PathParam("time_to") String time_to) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("get_reportenergylist_batch/{param_entity}")
+	public WSEntity_datas_batch get_reportenergylist_batch(@PathParam("param_entity") WSEntity_report_get_batch_param param_entity) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("report_change/{pointdata}")
+	public void report_change(@PathParam("pointdata") WSEntity_report_change pointdata) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("get_reportdatalist_change/{building}")
+	public WSEntity_changes get_reportdatalist_change(@PathParam("building") String building) throws Exception;
+
+	@WebResult
+	@POST
+	@Produces({ "application/json" })
+	@Path("post_report")
+	public void post_report(String param) throws Exception;
+
+	@WebResult
+	@POST
+	@Produces({ "application/json" })
+	@Path("post_report_batch")
+	public void post_report_batch(String param) throws Exception;
+
+	@WebResult
+	@POST
+	@Produces({ "application/json" })
+	@Path("post_reportenergy")
+	public void post_reportenergy(String param) throws Exception;
+
+	@WebResult
+	@POST
+	@Produces({ "application/json" })
+	@Path("post_reportenergy_batch")
+	public void post_reportenergy_batch(String param) throws Exception;
+
+	@WebResult
+	@POST
+	@Produces({ "application/json" })
+	@Path("post_report_change")
+	public void post_report_change(String param) throws Exception;
+
+	@WebResult
+	@POST
+	@Produces({ "application/json" })
+	@Path("post_reportdatalist")
+	public WSEntity_datas post_reportdatalist(String param) throws Exception;
+
+	@WebResult
+	@POST
+	@Produces({ "application/json" })
+	@Path("post_reportdatalist_batch")
+	public WSEntity_datas_batch post_reportdatalist_batch(String param) throws Exception;
+
+	@WebResult
+	@POST
+	@Produces({ "application/json" })
+	@Path("post_reportenergylist")
+	public WSEntity_datas post_reportenergylist(String param) throws Exception;
+
+	@WebResult
+	@POST
+	@Produces({ "application/json" })
+	@Path("post_reportenergylist_batch")
+	public WSEntity_datas_batch post_reportenergylist_batch(String param) throws Exception;
+
+}

+ 228 - 0
src/main/java/com/persagy/service/IService1.java.post

@@ -0,0 +1,228 @@
+package com.persagy.service;
+
+import javax.jws.WebResult;
+import javax.jws.WebService;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+
+import com.persagy.entity.EntitySimple;
+import com.persagy.entity.WSEntity_changes;
+import com.persagy.entity.WSEntity_ci_status;
+import com.persagy.entity.WSEntity_datas;
+import com.persagy.entity.WSEntity_datas_batch;
+import com.persagy.entity.WSEntity_points;
+import com.persagy.entity.WSEntity_report;
+import com.persagy.entity.WSEntity_report_batch;
+import com.persagy.entity.WSEntity_report_change;
+import com.persagy.entity.WSEntity_report_get_batch_param;
+import com.persagy.wsentity.SSurvey;
+import com.persagy.wsentity.SSurveyResult;
+import com.persagy.wsentity2.TSurvey;
+import com.persagy.wsentity2.TSurveyResult;
+import com.sagacloud.util.compute_engine.entity.Entity_ci_instance;
+import com.sagacloud.util.compute_engine.entity.Entity_ci_instances;
+
+@WebService
+@Path("/Service1_RS/")
+@Produces({ "application/json" })
+public interface IService1 {
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("GetSimple/{param}")
+	public EntitySimple GetSimple(@PathParam("param") EntitySimple param);
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("ci_instance_GetAll")
+	public Entity_ci_instances ci_instance_GetAll() throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("ci_instance_Get/{object_sign}/{instance_name}")
+	public Entity_ci_instance ci_instance_Get(@PathParam("object_sign") String object_sign, @PathParam("instance_name") String instance_name)
+			throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("ci_instance_Delete/{object_sign}/{instance_name}")
+	public void ci_instance_Delete(@PathParam("object_sign") String object_sign, @PathParam("instance_name") String instance_name) throws Exception;
+
+	@WebResult
+	@POST
+	@Produces({ "application/json" })
+	@Path("ci_instance_Update")
+	public void ci_instance_Update(String instance) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("ci_instance_Request/{object_sign}/{instance_name}/{status_request}")
+	public void ci_instance_Request(@PathParam("object_sign") String object_sign, @PathParam("instance_name") String instance_name,
+			@PathParam("status_request") String status_request) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("ci_instance_interval/{object_sign}/{instance_name}/{interval}")
+	public void ci_instance_interval(@PathParam("object_sign") String object_sign, @PathParam("instance_name") String instance_name,
+			@PathParam("interval") long interval) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("ci_instance_status/{object_sign}/{instance_name}")
+	public WSEntity_ci_status ci_instance_status(@PathParam("object_sign") String object_sign, @PathParam("instance_name") String instance_name)
+			throws Exception;
+
+	@WebResult
+	@POST
+	@Produces({ "application/json" })
+	@Path("Survey_Delete")
+	public void Survey_Delete(String survey) throws Exception;
+
+	@WebResult
+	@POST
+	@Produces({ "application/json" })
+	@Path("Survey_Update")
+	public SSurveyResult Survey_Update(String survey) throws Exception;
+
+	@WebResult
+	@POST
+	@Produces({ "application/json" })
+	@Path("Survey_Delete2")
+	public void Survey_Delete2(String survey) throws Exception;
+
+	@WebResult
+	@POST
+	@Produces({ "application/json" })
+	@Path("Survey_Update2")
+	public TSurveyResult Survey_Update2(String survey) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("servicedata_recompute/{object_sign}/{compute_time_from}")
+	public String servicedata_recompute(@PathParam("object_sign") String object_sign, @PathParam("compute_time_from") String compute_time_from)
+			throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("fjd_recompute/{building}/{compute_time}")
+	public String fjd_recompute(@PathParam("building") String building, @PathParam("compute_time") String compute_time) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("fjd_0_buildingcomputetime/{building}")
+	public String fjd_0_buildingcomputetime(@PathParam("building") String building) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("fjd_0_buildingcomputetime_delete/{building}")
+	public void fjd_0_buildingcomputetime_delete(@PathParam("building") String building) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("fjd_0_compute_request/{building}/{compute_time_from}/{compute_time_to}")
+	public void fjd_0_compute_request(@PathParam("building") String building, @PathParam("compute_time_from") String compute_time_from,
+			@PathParam("compute_time_to") String compute_time_to) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("get_dy_pointlist/{building}")
+	public WSEntity_points get_dy_pointlist(@PathParam("building") String building) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("get_dy_reportpointlist/{building}")
+	public WSEntity_points get_dy_reportpointlist(@PathParam("building") String building) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("ini_fjd_0_buildingcomputetime/{building}/{compute_time}")
+	public void ini_fjd_0_buildingcomputetime(@PathParam("building") String building, @PathParam("compute_time") String compute_time)
+			throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("set_fjd_0_buildingcomputetime/{building}/{compute_time}")
+	public void set_fjd_0_buildingcomputetime(@PathParam("building") String building, @PathParam("compute_time") String compute_time)
+			throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("set_fjd_0_buildingcomputetime_by_model/{building}/{energyModelSign}/{compute_time}")
+	public String set_fjd_0_buildingcomputetime_by_model(@PathParam("building") String building, @PathParam("energyModelSign") String energyModelSign,
+			@PathParam("compute_time") String compute_time) throws Exception;
+
+	@WebResult
+	@POST
+	@Produces({ "application/json" })
+	@Path("ini_dy_pointlist")
+	public void ini_dy_pointlist(String points) throws Exception;
+
+	@WebResult
+	@POST
+	@Produces({ "application/json" })
+	@Path("set_dy_pointlist")
+	public String set_dy_pointlist(String points) throws Exception;
+
+	@WebResult
+	@POST
+	@Produces({ "application/json" })
+	@Path("set_dy_reportpointlist")
+	public String set_dy_reportpointlist(String points) throws Exception;
+
+	@WebResult
+	@POST
+	@Produces({ "application/json" })
+	@Path("report")
+	public void report(String pointdata) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("get_reportdatalist/{building}/{meter}/{funcid}/{time_from}/{time_to}")
+	public WSEntity_datas get_reportdatalist(@PathParam("building") String building, @PathParam("meter") String meter,
+			@PathParam("funcid") Long funcid, @PathParam("time_from") String time_from, @PathParam("time_to") String time_to) throws Exception;
+
+	@WebResult
+	@POST
+	@Produces({ "application/json" })
+	@Path("report_change")
+	public void report_change(String pointdata) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("get_reportdatalist_change")
+	public WSEntity_changes get_reportdatalist_change(String building) throws Exception;
+
+	@WebResult
+	@POST
+	@Produces({ "application/json" })
+	@Path("report_batch")
+	public void report_batch(String data_batch) throws Exception;
+
+	@WebResult
+	@POST
+	@Produces({ "application/json" })
+	@Path("get_reportdatalist_batch")
+	public WSEntity_datas_batch get_reportdatalist_batch(String param_entity) throws Exception;
+}

+ 29 - 0
src/main/java/com/persagy/service/IService2.java

@@ -0,0 +1,29 @@
+package com.persagy.service;
+
+import javax.jws.WebResult;
+import javax.jws.WebService;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+
+import com.persagy.entity.WSBatchParam;
+import com.persagy.entity.WSParam;
+
+@WebService
+@Path("/Service2_RS/")
+@Produces({ "application/xml", "application/json" })
+public interface IService2 {
+
+	@WebResult
+	@GET
+	@Produces({ "application/xml", "application/json" })
+	@Path("Get/{param}")
+	public WSParam Execute(@PathParam("param") WSParam param);
+
+	@WebResult
+	@GET
+	@Produces({ "application/xml", "application/json" })
+	@Path("Batch/{param}")
+	public WSBatchParam ExecuteBatch(@PathParam("param") WSBatchParam param);
+}

+ 28 - 0
src/main/java/com/persagy/service/IService2.java.post

@@ -0,0 +1,28 @@
+package com.persagy.service;
+
+import javax.jws.WebResult;
+import javax.jws.WebService;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+
+import com.persagy.entity.WSBatchParam;
+import com.persagy.entity.WSParam;
+
+@WebService
+@Path("/Service2_RS/")
+@Produces({ "application/xml", "application/json" })
+public interface IService2 {
+
+	@WebResult
+	@POST
+	@Produces({ "application/xml", "application/json" })
+	@Path("Get")
+	public WSParam Execute(String param);
+
+	@WebResult
+	@POST
+	@Produces({ "application/xml", "application/json" })
+	@Path("Batch")
+	public WSBatchParam ExecuteBatch(String param);
+}

+ 70 - 0
src/main/java/com/persagy/service/IServiceDynamicData.java

@@ -0,0 +1,70 @@
+package com.persagy.service;
+
+import javax.jws.WebResult;
+import javax.jws.WebService;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+
+import com.persagy.entity.EntityDynamicData;
+import com.persagy.entity.EntityDynamicDataArray;
+
+@WebService
+@Path("/ServiceDynamicData_RS/")
+@Produces({ "application/json" })
+public interface IServiceDynamicData {
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("test")
+	public String test();
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("GetOriginalPresent/{building}/{meter}/{funcid}")
+	public EntityDynamicData GetOriginalPresent(@PathParam("building") String building, @PathParam("meter") String meter,
+			@PathParam("funcid") long funcid) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("GetOriginalArray/{building}/{meter}/{funcid}/{timefrom}/{timeto}")
+	public EntityDynamicDataArray GetOriginalArray(@PathParam("building") String building, @PathParam("meter") String meter,
+			@PathParam("funcid") long funcid, @PathParam("timefrom") String timefrom, @PathParam("timeto") String timeto) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("GetFJDArray/{building}/{meter}/{funcid}/{time_period}/{timefrom}/{timeto}")
+	public EntityDynamicDataArray GetFJDArray(@PathParam("building") String building, @PathParam("meter") String meter,
+			@PathParam("funcid") long funcid, @PathParam("time_period") String time_period, @PathParam("timefrom") String timefrom,
+			@PathParam("timeto") String timeto) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("GetServiceDataArray/{building}/{meter}/{funcid}/{time_period}/{timefrom}/{timeto}")
+	public EntityDynamicDataArray GetServiceDataArray(@PathParam("building") String building, @PathParam("meter") String meter,
+			@PathParam("funcid") long funcid, @PathParam("time_period") String time_period, @PathParam("timefrom") String timefrom,
+			@PathParam("timeto") String timeto) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("GetObjectDataArray/{building}/{object_id}/{time_period}/{timefrom}/{timeto}")
+	public EntityDynamicDataArray GetObjectDataArray(@PathParam("building") String building, @PathParam("object_id") String object_id,
+			@PathParam("time_period") String time_period, @PathParam("timefrom") String timefrom, @PathParam("timeto") String timeto)
+			throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("GetEnergyDataArray/{building}/{mode_sign}/{mode_node_sign}/{time_period}/{timefrom}/{timeto}")
+	public EntityDynamicDataArray GetEnergyDataArray(@PathParam("building") String building, @PathParam("mode_sign") String mode_sign,
+			@PathParam("mode_node_sign") String mode_node_sign, @PathParam("time_period") String time_period, @PathParam("timefrom") String timefrom,
+			@PathParam("timeto") String timeto) throws Exception;
+
+}

+ 79 - 0
src/main/java/com/persagy/service/IServiceTenant.java

@@ -0,0 +1,79 @@
+package com.persagy.service;
+
+import javax.jws.WebResult;
+import javax.jws.WebService;
+import javax.ws.rs.FormParam;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+
+import com.persagy.entity.EntitySimple;
+import com.persagy.entity.WSEntity_tenant;
+import com.persagy.entity.WSEntity_tenants;
+
+@WebService
+@Path("/ServiceTenant_RS/")
+@Produces({ "application/json" })
+public interface IServiceTenant {
+
+	@WebResult
+	@POST
+	@Produces({ "application/json" })
+	@Path("GetSimple")
+	public EntitySimple GetSimple(String str);
+
+	@WebResult
+	@POST
+	@Produces({ "application/json" })
+	@Path("AddTenant")
+	public void AddTenant(String str) throws Exception;
+
+	@WebResult
+	@POST
+	@Produces({ "application/json" })
+	@Path("AddTenants")
+	public void AddTenants(String str) throws Exception;
+
+	@WebResult
+	@POST
+	@Produces({ "application/json" })
+	@Path("ModifyTenantPrice")
+	public void ModifyTenantPrice(String str) throws Exception;
+
+	@WebResult
+	@POST
+	@Produces({ "application/json" })
+	@Path("ModifyTenantPrice_before")
+	public void ModifyTenantPrice_before(String str) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("DeleteTenant/{building}/{sign}")
+	public void DeleteTenant(@PathParam("building") String building, @PathParam("sign") String sign)
+			throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("StopTenant/{building}/{sign}/{valid_time_to}")
+	public void StopTenant(@PathParam("building") String building, @PathParam("sign") String sign, @PathParam("valid_time_to") String valid_time_to)
+			throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("RechargeTenant/{building}/{sign}/{operate_time}/{amount}")
+	public void RechargeTenant(@PathParam("building") String building, @PathParam("sign") String sign, @PathParam("operate_time") String operate_time,
+			@PathParam("amount") Double amount) throws Exception;
+
+	@WebResult
+	@GET
+	@Produces({ "application/json" })
+	@Path("RechargeTenantEnergy/{building}/{sign}/{energy_type}/{operate_time}/{amount}")
+	public void RechargeTenantEnergy(@PathParam("building") String building, @PathParam("sign") String sign,
+			@PathParam("energy_type") String energy_type, @PathParam("operate_time") String operate_time, @PathParam("amount") Double amount)
+			throws Exception;
+}

+ 124 - 0
src/main/java/com/persagy/service/ServiceDynamicDataImpl.java

@@ -0,0 +1,124 @@
+package com.persagy.service;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.persagy.entity.EntityDynamicData;
+import com.persagy.entity.EntityDynamicDataArray;
+import com.persagy.util.DynamicDataUtil;
+import com.sagacloud.util.compute_engine.util.ConstantCE;
+import com.sagacloud.util.compute_engine.util.DoubleTimeObject;
+import com.sagacloud.util.compute_engine.util.QueryUtil;
+import com.sagacloud.util.compute_engine.util.QueryUtil_fjd;
+
+import javax.jws.WebResult;
+import javax.jws.WebService;
+import java.util.List;
+
+@WebService(endpointInterface = "com.persagy.service.IServiceDynamicData")
+public class ServiceDynamicDataImpl implements IServiceDynamicData {
+	@Override
+	@WebResult
+	public String test() {
+		return "hello";
+	}
+
+	@Override
+	@WebResult
+	public EntityDynamicData GetOriginalPresent(String building, String meter, long funcid) throws Exception {
+		EntityDynamicData result = null;
+		JSONObject Criteria = new JSONObject();
+		Criteria.put("building", building);
+		Criteria.put("meter", meter);
+		Criteria.put("funcid", funcid);
+		JSONArray Content = QueryUtil.select(ConstantCE.database_name, "original_present", Criteria);
+		if (Content.size() > 0) {
+			result = DynamicDataUtil.Convert_original(Content.getJSONObject(0));
+		}
+		return result;
+	}
+
+	@Override
+	@WebResult
+	public EntityDynamicDataArray GetOriginalArray(String building, String meter, long funcid, String timefrom, String timeto) throws Exception {
+		JSONObject Criteria = new JSONObject();
+		Criteria.put("building", building);
+		Criteria.put("meter", meter);
+		Criteria.put("funcid", funcid);
+		JSONObject Range = new JSONObject();
+		Range.put("$gte", timefrom);
+		Range.put("$lte", timeto);
+		Criteria.put("receivetime", Range);
+		JSONArray Content = QueryUtil.select(ConstantCE.database_name, "original_month", Criteria);
+		EntityDynamicDataArray result = DynamicDataUtil.ConvertArray_original(Content);
+		return result;
+	}
+
+	@Override
+	@WebResult
+	public EntityDynamicDataArray GetFJDArray(String building, String meter, long funcid, String time_period, String timefrom, String timeto)
+			throws Exception {
+		JSONObject Criteria = new JSONObject();
+		Criteria.put("building", building);
+		Criteria.put("meter", meter);
+		Criteria.put("funcid", funcid);
+		JSONObject Range = new JSONObject();
+		Range.put("$gte", timefrom);
+		Range.put("$lte", timeto);
+		Criteria.put("receivetime", Range);
+		List<DoubleTimeObject> dataList = QueryUtil_fjd.get_fjd_merge(ConstantCE.database_name, building, meter,
+				funcid, time_period, timefrom, timeto, true, false);
+		EntityDynamicDataArray result = DynamicDataUtil.ConvertArray(dataList);
+		return result;
+	}
+
+	@Override
+	@WebResult
+	public EntityDynamicDataArray GetServiceDataArray(String building, String meter, long funcid, String time_period, String timefrom, String timeto)
+			throws Exception {
+		JSONObject Criteria = new JSONObject();
+		Criteria.put("building", building);
+		Criteria.put("meter", meter);
+		Criteria.put("funcid", funcid);
+		JSONObject Range = new JSONObject();
+		Range.put("$gte", timefrom);
+		Range.put("$lt", timeto);
+		Criteria.put("data_time", Range);
+		JSONArray Content = QueryUtil.select( ConstantCE.database_name, "data_servicedata_" + time_period,
+				Criteria);
+		EntityDynamicDataArray result = DynamicDataUtil.ConvertArray(Content);
+		return result;
+	}
+
+	@Override
+	public EntityDynamicDataArray GetObjectDataArray(String building, String object_id, String time_period, String timefrom, String timeto)
+			throws Exception {
+		JSONObject Criteria = new JSONObject();
+		Criteria.put("building", building);
+		Criteria.put("objectSign", object_id);
+		JSONObject Range = new JSONObject();
+		Range.put("$gte", timefrom);
+		Range.put("$lt", timeto);
+		Criteria.put("data_time", Range);
+		JSONArray Content = QueryUtil.select( ConstantCE.database_name, "data_objectdata_" + time_period,
+				Criteria);
+		EntityDynamicDataArray result = DynamicDataUtil.ConvertArray(Content);
+		return result;
+	}
+
+	@Override
+	public EntityDynamicDataArray GetEnergyDataArray(String building, String mode_sign, String mode_node_sign, String time_period, String timefrom,
+													 String timeto) throws Exception {
+		JSONObject Criteria = new JSONObject();
+		Criteria.put("building", building);
+		Criteria.put("energyModelSign", mode_sign);
+		Criteria.put("energyModelNodeSign", mode_node_sign);
+		JSONObject Range = new JSONObject();
+		Range.put("$gte", timefrom);
+		Range.put("$lt", timeto);
+		Criteria.put("data_time", Range);
+		JSONArray Content = QueryUtil.select(ConstantCE.database_name, "data_energydata_" + time_period,
+				Criteria);
+		EntityDynamicDataArray result = DynamicDataUtil.ConvertArray(Content);
+		return result;
+	}
+}

+ 373 - 0
src/main/java/com/persagy/service/ServiceImpl1.java

@@ -0,0 +1,373 @@
+package com.persagy.service;
+
+import java.util.Date;
+
+import javax.jws.WebResult;
+import javax.jws.WebService;
+
+import com.persagy.entity.EntitySimple;
+import com.persagy.entity.WSEntity_changes;
+import com.persagy.entity.WSEntity_ci_status;
+import com.persagy.entity.WSEntity_datas;
+import com.persagy.entity.WSEntity_datas_batch;
+import com.persagy.entity.WSEntity_points;
+import com.persagy.entity.WSEntity_report;
+import com.persagy.entity.WSEntity_report_batch;
+import com.persagy.entity.WSEntity_report_change;
+import com.persagy.entity.WSEntity_report_get_batch_param;
+import com.persagy.entity.WSEntity_report_get_param;
+import com.persagy.wsentity.SSurvey;
+import com.persagy.wsentity.SSurveyResult;
+import com.persagy.wsentity2.TSurvey;
+import com.persagy.wsentity2.TSurveyResult;
+import com.sagacloud.util.compute_engine.entity.Entity_ci_instance;
+import com.sagacloud.util.compute_engine.entity.Entity_ci_instances;
+
+@WebService(endpointInterface = "com.persagy.service.IService1")
+public class ServiceImpl1 implements IService1 {
+	@WebResult
+	public EntitySimple GetSimple(EntitySimple param) {
+		return param;
+	}
+
+	@WebResult
+	public Entity_ci_instances ci_instance_GetAll() throws Exception {
+		Entity_ci_instances result = ServiceUtil.ci_instance_GetAll();
+		return result;
+	}
+
+	@WebResult
+	public Entity_ci_instance ci_instance_Get(String object_sign, String instance_name) throws Exception {
+		Entity_ci_instance result = ServiceUtil.ci_instance_Get(object_sign, instance_name);
+		return result;
+	}
+
+	@WebResult
+	public void ci_instance_Update(Entity_ci_instance instance) throws Exception {
+		ServiceUtil.ci_instance_Update(instance);
+	}
+
+	@WebResult
+	public void ci_instance_Delete(String object_sign, String instance_name) throws Exception {
+		ServiceUtil.ci_instance_Delete(object_sign, instance_name);
+	}
+
+	@WebResult
+	public void ci_instance_Request(String object_sign, String instance_name, String status_request) throws Exception {
+		ServiceUtil.ci_instance_Request(object_sign, instance_name, status_request);
+	}
+
+	@WebResult
+	public void ci_instance_interval(String object_sign, String instance_name, long interval) throws Exception {
+		ServiceUtil.ci_instance_interval(object_sign, instance_name, interval);
+	}
+
+	@WebResult
+	public WSEntity_ci_status ci_instance_status(String object_sign, String instance_name) throws Exception {
+		WSEntity_ci_status result = ServiceUtil.ci_instance_status(object_sign, instance_name);
+		return result;
+	}
+
+	@WebResult
+	public void Survey_Delete(SSurvey survey) throws Exception {
+		ServiceUtil.Survey_Delete(survey);
+	}
+
+	@WebResult
+	public SSurveyResult Survey_Update(SSurvey survey) throws Exception {
+		SSurveyResult result = ServiceUtil.Survey_Update(survey);
+		return result;
+	}
+
+	@WebResult
+	public void Survey_Delete2(TSurvey survey) throws Exception {
+		ServiceUtil.Survey_Delete2(survey);
+	}
+
+	@WebResult
+	public TSurveyResult Survey_Update2(TSurvey survey) throws Exception {
+		TSurveyResult result = ServiceUtil.Survey_Update2(survey);
+		return result;
+	}
+
+	@WebResult
+	public String servicedata_recompute(String object_sign, String time) throws Exception {
+		return ServiceUtil.servicedata_recompute(object_sign, time);
+	}
+
+	@WebResult
+	public String EMS_recompute(String object_sign, String time) throws Exception {
+		return ServiceUtil.EMS_recompute(object_sign, time);
+	}
+
+	@WebResult
+	public String fjd_recompute(String building, String compute_time) throws Exception {
+		ServiceUtil.set_fjd_0_buildingcomputetime(building, compute_time, false);
+		return null;
+	}
+
+	@WebResult
+	public String fjd_0_buildingcomputetime(String building) throws Exception {
+		String result = ServiceUtil.get_fjd_0_buildingcomputetime(building);
+		return result;
+	}
+
+	@WebResult
+	public void fjd_0_buildingcomputetime_delete(String building) throws Exception {
+		ServiceUtil.fjd_0_buildingcomputetime_delete(building);
+	}
+
+	@WebResult
+	public void fjd_0_compute_request(String building, String compute_time_from, String compute_time_to) throws Exception {
+		ServiceUtil.fjd_0_compute_request(building, compute_time_from, compute_time_to);
+	}
+
+	@WebResult
+	public void fjd_0_compute_request_by_model(String building, String modelSign, String compute_time_from, String compute_time_to) throws Exception {
+		ServiceUtil.fjd_0_compute_request_by_model(building, modelSign, compute_time_from, compute_time_to);
+	}
+
+	@WebResult
+	public WSEntity_points get_dy_pointlist(String building) throws Exception {
+		WSEntity_points result = ServiceUtil.get_dy_pointlist(building, false);
+		return result;
+	}
+
+	@WebResult
+	public WSEntity_points get_dy_reportpointlist(String building) throws Exception {
+		WSEntity_points result = ServiceUtil.get_dy_pointlist(building, true);
+		return result;
+	}
+
+	@WebResult
+	public void ini_fjd_0_buildingcomputetime(String building, String compute_time) throws Exception {
+		ServiceUtil.set_fjd_0_buildingcomputetime(building, compute_time, true);
+	}
+
+	@WebResult
+	public void ini_dy_pointlist(WSEntity_points points) throws Exception {
+		ServiceUtil.set_dy_pointlist(points, false, "Other");
+	}
+
+	@WebResult
+	public void set_fjd_0_buildingcomputetime(String building, String compute_time) throws Exception {
+		ServiceUtil.set_fjd_0_buildingcomputetime(building, compute_time, false);
+	}
+
+	@WebResult
+	public String set_fjd_0_buildingcomputetime_by_model(String building, String energyModelSign, String compute_time) throws Exception {
+		String result = ServiceUtil.set_fjd_0_buildingcomputetime_by_model(building, energyModelSign, compute_time);
+		return result;
+	}
+
+	@WebResult
+	public String set_dy_pointlist(WSEntity_points points) throws Exception {
+		String result = ServiceUtil.set_dy_pointlist(points, false, "Other");
+		return result;
+	}
+
+	@WebResult
+	public String set_dy_reportpointlist(WSEntity_points points) throws Exception {
+		String result = ServiceUtil.set_dy_pointlist(points, true, "Other");
+		return result;
+	}
+
+	@WebResult
+	public void report(WSEntity_report pointdata) throws Exception {
+		Date curr_time = new Date();
+		ServiceUtil.report(pointdata, false, curr_time);
+	}
+
+	@WebResult
+	public void report_batch(WSEntity_report_batch data_batch) throws Exception {
+		Date curr_time = new Date();
+		WSEntity_report[] data_array = data_batch.getData_array();
+		for (int i = 0; i < data_array.length; i++) {
+			WSEntity_report data = data_array[i];
+			if (data_batch.getBuilding() != null) {
+				data.setBuilding(data_batch.getBuilding());
+			}
+			ServiceUtil.report(data, false, curr_time);
+		}
+	}
+
+	@WebResult
+	public void reportenergy(WSEntity_report pointdata) throws Exception {
+		Date curr_time = new Date();
+		ServiceUtil.report(pointdata, true, curr_time);
+	}
+
+	@WebResult
+	public void reportenergy_batch(WSEntity_report_batch data_batch) throws Exception {
+		Date curr_time = new Date();
+		WSEntity_report[] data_array = data_batch.getData_array();
+		for (int i = 0; i < data_array.length; i++) {
+			WSEntity_report data = data_array[i];
+			if (data_batch.getBuilding() != null) {
+				data.setBuilding(data_batch.getBuilding());
+			}
+			ServiceUtil.report(data, true, curr_time);
+		}
+	}
+
+	@WebResult
+	public WSEntity_datas get_reportdatalist(String building, String meter, Long funcid, String time_from, String time_to) throws Exception {
+		WSEntity_datas result = ServiceUtil.get_reportdatalist(building, "read_data", meter, funcid, time_from, time_to);
+		return result;
+	}
+
+	@WebResult
+	public WSEntity_datas_batch get_reportdatalist_batch(WSEntity_report_get_batch_param param_entity) throws Exception {
+		String building = param_entity.getBuilding();
+		String time_from = param_entity.getTime_from();
+		String time_to = param_entity.getTime_to();
+		int point_count = param_entity.getMeter_array().length;
+		WSEntity_datas[] data_array = new WSEntity_datas[point_count];
+		for (int i = 0; i < point_count; i++) {
+			String meter = param_entity.getMeter_array()[i];
+			long funcid = param_entity.getFuncid_array()[i];
+			data_array[i] = ServiceUtil.get_reportdatalist(building, "read_data", meter, funcid, time_from, time_to);
+		}
+		WSEntity_datas_batch result = new WSEntity_datas_batch();
+		result.setBuilding(building);
+		result.setData_array(data_array);
+		return result;
+	}
+
+	@WebResult
+	public WSEntity_datas get_reportenergylist(String building, String meter, Long funcid, String time_from, String time_to) throws Exception {
+		WSEntity_datas result = ServiceUtil.get_reportdatalist(building, "energy", meter, funcid, time_from, time_to);
+		return result;
+	}
+
+	@WebResult
+	public WSEntity_datas_batch get_reportenergylist_batch(WSEntity_report_get_batch_param param_entity) throws Exception {
+		String building = param_entity.getBuilding();
+		String time_from = param_entity.getTime_from();
+		String time_to = param_entity.getTime_to();
+		int point_count = param_entity.getMeter_array().length;
+		WSEntity_datas[] data_array = new WSEntity_datas[point_count];
+		for (int i = 0; i < point_count; i++) {
+			String meter = param_entity.getMeter_array()[i];
+			long funcid = param_entity.getFuncid_array()[i];
+			data_array[i] = ServiceUtil.get_reportdatalist(building, "energy", meter, funcid, time_from, time_to);
+		}
+		WSEntity_datas_batch result = new WSEntity_datas_batch();
+		result.setBuilding(building);
+		result.setData_array(data_array);
+		return result;
+	}
+
+	@WebResult
+	public void report_change(WSEntity_report_change pointdata) throws Exception {
+		ServiceUtil.report_change(pointdata);
+	}
+
+	@WebResult
+	public WSEntity_changes get_reportdatalist_change(String building) throws Exception {
+		WSEntity_changes result = ServiceUtil.get_reportdatalist_change(building);
+		return result;
+	}
+
+	@WebResult
+	public void post_report(String param) throws Exception {
+		Date curr_time = new Date();
+		WSEntity_report pointdata = new WSEntity_report(param);
+		ServiceUtil.report(pointdata, false, curr_time);
+	}
+
+	@WebResult
+	public void post_report_batch(String param) throws Exception {
+		Date curr_time = new Date();
+		WSEntity_report_batch data_batch = new WSEntity_report_batch(param);
+		WSEntity_report[] data_array = data_batch.getData_array();
+		for (int i = 0; i < data_array.length; i++) {
+			WSEntity_report data = data_array[i];
+			if (data_batch.getBuilding() != null) {
+				data.setBuilding(data_batch.getBuilding());
+			}
+			ServiceUtil.report(data, false, curr_time);
+		}
+	}
+
+	@WebResult
+	public void post_reportenergy(String param) throws Exception {
+		Date curr_time = new Date();
+		WSEntity_report pointdata = new WSEntity_report(param);
+		ServiceUtil.report(pointdata, true, curr_time);
+	}
+
+	@WebResult
+	public void post_reportenergy_batch(String param) throws Exception {
+		Date curr_time = new Date();
+		WSEntity_report_batch data_batch = new WSEntity_report_batch(param);
+		WSEntity_report[] data_array = data_batch.getData_array();
+		for (int i = 0; i < data_array.length; i++) {
+			WSEntity_report data = data_array[i];
+			if (data_batch.getBuilding() != null) {
+				data.setBuilding(data_batch.getBuilding());
+			}
+			ServiceUtil.report(data, true, curr_time);
+		}
+	}
+
+	@WebResult
+	public void post_report_change(String param) throws Exception {
+		WSEntity_report_change pointdata = new WSEntity_report_change(param);
+		ServiceUtil.report_change(pointdata);
+	}
+
+	@WebResult
+	public WSEntity_datas post_reportdatalist(String param) throws Exception {
+		WSEntity_report_get_param param_entity = new WSEntity_report_get_param(param);
+		WSEntity_datas result = ServiceUtil.get_reportdatalist(param_entity.getBuilding(), "read_data", param_entity.getMeter(),
+				param_entity.getFuncid(), param_entity.getTime_from(), param_entity.getTime_to());
+		return result;
+	}
+
+	@WebResult
+	public WSEntity_datas_batch post_reportdatalist_batch(String param) throws Exception {
+		WSEntity_report_get_batch_param param_entity = new WSEntity_report_get_batch_param(param);
+		String building = param_entity.getBuilding();
+		String time_from = param_entity.getTime_from();
+		String time_to = param_entity.getTime_to();
+		int point_count = param_entity.getMeter_array().length;
+		WSEntity_datas[] data_array = new WSEntity_datas[point_count];
+		for (int i = 0; i < point_count; i++) {
+			String meter = param_entity.getMeter_array()[i];
+			long funcid = param_entity.getFuncid_array()[i];
+			data_array[i] = ServiceUtil.get_reportdatalist(building, "read_data", meter, funcid, time_from, time_to);
+		}
+		WSEntity_datas_batch result = new WSEntity_datas_batch();
+		result.setBuilding(building);
+		result.setData_array(data_array);
+		return result;
+	}
+
+	@WebResult
+	public WSEntity_datas post_reportenergylist(String param) throws Exception {
+		WSEntity_report_get_param param_entity = new WSEntity_report_get_param(param);
+		WSEntity_datas result = ServiceUtil.get_reportdatalist(param_entity.getBuilding(), "energy", param_entity.getMeter(),
+				param_entity.getFuncid(), param_entity.getTime_from(), param_entity.getTime_to());
+		return result;
+	}
+
+	@WebResult
+	public WSEntity_datas_batch post_reportenergylist_batch(String param) throws Exception {
+		WSEntity_report_get_batch_param param_entity = new WSEntity_report_get_batch_param(param);
+		String building = param_entity.getBuilding();
+		String time_from = param_entity.getTime_from();
+		String time_to = param_entity.getTime_to();
+		int point_count = param_entity.getMeter_array().length;
+		WSEntity_datas[] data_array = new WSEntity_datas[point_count];
+		for (int i = 0; i < point_count; i++) {
+			String meter = param_entity.getMeter_array()[i];
+			long funcid = param_entity.getFuncid_array()[i];
+			data_array[i] = ServiceUtil.get_reportdatalist(building, "energy", meter, funcid, time_from, time_to);
+		}
+		WSEntity_datas_batch result = new WSEntity_datas_batch();
+		result.setBuilding(building);
+		result.setData_array(data_array);
+		return result;
+	}
+}

+ 225 - 0
src/main/java/com/persagy/service/ServiceImpl1.java.post

@@ -0,0 +1,225 @@
+package com.persagy.service;
+
+import javax.jws.WebResult;
+import javax.jws.WebService;
+
+import com.persagy.entity.EntitySimple;
+import com.persagy.entity.WSEntity_changes;
+import com.persagy.entity.WSEntity_ci_status;
+import com.persagy.entity.WSEntity_datas;
+import com.persagy.entity.WSEntity_datas_batch;
+import com.persagy.entity.WSEntity_points;
+import com.persagy.entity.WSEntity_report;
+import com.persagy.entity.WSEntity_report_batch;
+import com.persagy.entity.WSEntity_report_change;
+import com.persagy.entity.WSEntity_report_get_batch_param;
+import com.persagy.wsentity.SSurvey;
+import com.persagy.wsentity.SSurveyResult;
+import com.persagy.wsentity2.TSurvey;
+import com.persagy.wsentity2.TSurveyResult;
+import com.sagacloud.util.compute_engine.entity.Entity_ci_instance;
+import com.sagacloud.util.compute_engine.entity.Entity_ci_instances;
+
+@WebService(endpointInterface = "com.persagy.service.IService1")
+public class ServiceImpl1 implements IService1 {
+	@WebResult
+	public EntitySimple GetSimple(EntitySimple param) {
+		return param;
+	}
+
+	@WebResult
+	public Entity_ci_instances ci_instance_GetAll() throws Exception {
+		Entity_ci_instances result = ServiceUtil.ci_instance_GetAll();
+		return result;
+	}
+
+	@WebResult
+	public Entity_ci_instance ci_instance_Get(String object_sign, String instance_name) throws Exception {
+		Entity_ci_instance result = ServiceUtil.ci_instance_Get(object_sign, instance_name);
+		return result;
+	}
+
+	@WebResult
+	public void ci_instance_Update(String instanceString) throws Exception {
+		Entity_ci_instance instance = new Entity_ci_instance(instanceString);
+		ServiceUtil.ci_instance_Update(instance);
+	}
+
+	@WebResult
+	public void ci_instance_Delete(String object_sign, String instance_name) throws Exception {
+		ServiceUtil.ci_instance_Delete(object_sign, instance_name);
+	}
+
+	@WebResult
+	public void ci_instance_Request(String object_sign, String instance_name, String status_request) throws Exception {
+		ServiceUtil.ci_instance_Request(object_sign, instance_name, status_request);
+	}
+
+	@WebResult
+	public void ci_instance_interval(String object_sign, String instance_name, long interval) throws Exception {
+		ServiceUtil.ci_instance_interval(object_sign, instance_name, interval);
+	}
+
+	@WebResult
+	public WSEntity_ci_status ci_instance_status(String object_sign, String instance_name) throws Exception {
+		WSEntity_ci_status result = ServiceUtil.ci_instance_status(object_sign, instance_name);
+		return result;
+	}
+
+	@WebResult
+	public void Survey_Delete(String surveyString) throws Exception {
+		SSurvey survey = new SSurvey(surveyString);
+		ServiceUtil.Survey_Delete(survey);
+	}
+
+	@WebResult
+	public SSurveyResult Survey_Update(String surveyString) throws Exception {
+		SSurvey survey = new SSurvey(surveyString);
+		SSurveyResult result = ServiceUtil.Survey_Update(survey);
+		return result;
+	}
+
+	@WebResult
+	public void Survey_Delete2(String surveyString) throws Exception {
+		TSurvey survey = new TSurvey(surveyString);
+		ServiceUtil.Survey_Delete2(survey);
+	}
+
+	@WebResult
+	public TSurveyResult Survey_Update2(String surveyString) throws Exception {
+		TSurvey survey = new TSurvey(surveyString);
+		TSurveyResult result = ServiceUtil.Survey_Update2(survey);
+		return result;
+	}
+
+	@WebResult
+	public String servicedata_recompute(String object_sign, String time) throws Exception {
+		return ServiceUtil.servicedata_recompute(object_sign, time);
+	}
+
+	@WebResult
+	public String fjd_recompute(String building, String compute_time) throws Exception {
+		ServiceUtil.set_fjd_0_buildingcomputetime(building, compute_time, false);
+		return null;
+	}
+
+	@WebResult
+	public String fjd_0_buildingcomputetime(String building) throws Exception {
+		String result = ServiceUtil.get_fjd_0_buildingcomputetime(building);
+		return result;
+	}
+
+	@WebResult
+	public void fjd_0_buildingcomputetime_delete(String building) throws Exception {
+		ServiceUtil.fjd_0_buildingcomputetime_delete(building);
+	}
+
+	@WebResult
+	public void fjd_0_compute_request(String building, String compute_time_from, String compute_time_to) throws Exception {
+		ServiceUtil.fjd_0_compute_request(building, compute_time_from, compute_time_to);
+	}
+
+	@WebResult
+	public WSEntity_points get_dy_pointlist(String building) throws Exception {
+		WSEntity_points result = ServiceUtil.get_dy_pointlist(building, false);
+		return result;
+	}
+
+	@WebResult
+	public WSEntity_points get_dy_reportpointlist(String building) throws Exception {
+		WSEntity_points result = ServiceUtil.get_dy_pointlist(building, true);
+		return result;
+	}
+
+	@WebResult
+	public void ini_fjd_0_buildingcomputetime(String building, String compute_time) throws Exception {
+		ServiceUtil.set_fjd_0_buildingcomputetime(building, compute_time, true);
+	}
+
+	@WebResult
+	public void ini_dy_pointlist(String pointsString) throws Exception {
+		WSEntity_points points = new WSEntity_points(pointsString);
+		ServiceUtil.set_dy_pointlist(points, false, "Other");
+	}
+
+	@WebResult
+	public void set_fjd_0_buildingcomputetime(String building, String compute_time) throws Exception {
+		ServiceUtil.set_fjd_0_buildingcomputetime(building, compute_time, false);
+	}
+
+	@WebResult
+	public String set_fjd_0_buildingcomputetime_by_model(String building, String energyModelSign, String compute_time) throws Exception {
+		String result = ServiceUtil.set_fjd_0_buildingcomputetime_by_model(building, energyModelSign, compute_time);
+		return result;
+	}
+
+	@WebResult
+	public String set_dy_pointlist(String pointsString) throws Exception {
+		WSEntity_points points = new WSEntity_points(pointsString);
+		String result = ServiceUtil.set_dy_pointlist(points, false, "Other");
+		return result;
+	}
+
+	@WebResult
+	public String set_dy_reportpointlist(String pointsString) throws Exception {
+		WSEntity_points points = new WSEntity_points(pointsString);
+		String result = ServiceUtil.set_dy_pointlist(points, true, "Other");
+		return result;
+	}
+
+	@WebResult
+	public void report(String pointdataString) throws Exception {
+		WSEntity_report pointdata = new WSEntity_report(pointdataString);
+		ServiceUtil.report(pointdata);
+	}
+
+	@WebResult
+	public WSEntity_datas get_reportdatalist(String building, String meter, Long funcid, String time_from, String time_to) throws Exception {
+		WSEntity_datas result = ServiceUtil.get_reportdatalist(building, meter, funcid, time_from, time_to);
+		return result;
+	}
+
+	@WebResult
+	public void report_change(String pointdataString) throws Exception {
+		WSEntity_report_change pointdata = new WSEntity_report_change(pointdataString);
+		ServiceUtil.report_change(pointdata);
+	}
+
+	@WebResult
+	public WSEntity_changes get_reportdatalist_change(String building) throws Exception {
+		WSEntity_changes result = ServiceUtil.get_reportdatalist_change(building);
+		return result;
+	}
+
+	@WebResult
+	public void report_batch(String data_batchString) throws Exception {
+		WSEntity_report_batch data_batch = new WSEntity_report_batch(data_batchString);
+		WSEntity_report[] data_array = data_batch.getData_array();
+		for (int i = 0; i < data_array.length; i++) {
+			WSEntity_report data = data_array[i];
+			if (data_batch.getBuilding() != null) {
+				data.setBuilding(data_batch.getBuilding());
+			}
+			ServiceUtil.report(data);
+		}
+	}
+
+	@WebResult
+	public WSEntity_datas_batch get_reportdatalist_batch(String param_entityString) throws Exception {
+		WSEntity_report_get_batch_param param_entity = new WSEntity_report_get_batch_param(param_entityString);
+		String building = param_entity.getBuilding();
+		String time_from = param_entity.getTime_from();
+		String time_to = param_entity.getTime_to();
+		int point_count = param_entity.getMeter_array().length;
+		WSEntity_datas[] data_array = new WSEntity_datas[point_count];
+		for (int i = 0; i < point_count; i++) {
+			String meter = param_entity.getMeter_array()[i];
+			long funcid = param_entity.getFuncid_array()[i];
+			data_array[i] = ServiceUtil.get_reportdatalist(building, meter, funcid, time_from, time_to);
+		}
+		WSEntity_datas_batch result = new WSEntity_datas_batch();
+		result.setBuilding(building);
+		result.setData_array(data_array);
+		return result;
+	}
+}

+ 70 - 0
src/main/java/com/persagy/service/ServiceImpl2.java

@@ -0,0 +1,70 @@
+package com.persagy.service;
+
+import javax.jws.WebResult;
+import javax.jws.WebService;
+
+import com.persagy.entity.WSBatchItem;
+import com.persagy.entity.WSBatchParam;
+import com.persagy.entity.WSParam;
+
+@WebService(endpointInterface = "com.persagy.service.IService2")
+public class ServiceImpl2 implements IService2 {
+	@WebResult
+	public WSParam Execute(WSParam param) {
+		String command = param.getCommand();
+		if (command.equals("data_energy")) {
+			param.setDatas(ServiceUtil2.data_energy(param.getBuilding(), param.getEnergyModelSign(), param.getEnergyModelNodeSign(),
+					param.getTime_period(), param.getData_time_from(), param.getData_time_to()));
+		} else if (command.equals("data_service")) {
+			param.setDatas(ServiceUtil2.data_service(param.getBuilding(), param.getMeter(), param.getFuncid(), param.getTime_period(),
+					param.getData_time_from(), param.getData_time_to()));
+		} else if (command.equals("data_near")) {
+			param.setDatas(ServiceUtil2.data_near(param.getBuilding(), param.getMeter(), param.getFuncid(), param.getTime_period(),
+					param.getData_time_from(), param.getData_time_to()));
+		} else if (command.equals("data_near_0")) {
+			param.setDatas(ServiceUtil2.data_near_0(param.getBuilding(), param.getMeter(), param.getFuncid(), param.getTime_period(),
+					param.getData_time_from(), param.getData_time_to()));
+		} else if (command.equals("data_near_1")) {
+			param.setDatas(ServiceUtil2.data_near_1(param.getBuilding(), param.getMeter(), param.getFuncid(), param.getTime_period(),
+					param.getData_time_from(), param.getData_time_to()));
+		} else if (command.equals("data_near_2")) {
+			param.setDatas(ServiceUtil2.data_near_2(param.getBuilding(), param.getMeter(), param.getFuncid(), param.getTime_period(),
+					param.getData_time_from(), param.getData_time_to()));
+		} else if (command.equals("write_fjd_2")) {
+			ServiceUtil2.write_fjd_2(param);
+		} else if (command.equals("present_building")) {
+			ServiceUtil2.present_building(param);
+		}
+		return param;
+	}
+
+	@WebResult
+	public WSBatchParam ExecuteBatch(WSBatchParam param) {
+		String command = param.getCommand();
+		if (param.getItems() != null) {
+			WSBatchItem[] items = param.getItems();
+			for (WSBatchItem item : items) {
+				if (command.equals("data_energy")) {
+					item.setDatas(ServiceUtil2.data_energy(param.getBuilding(), item.getEnergyModelSign(), item.getEnergyModelNodeSign(),
+							item.getTime_period(), item.getData_time_from(), item.getData_time_to()));
+				} else if (command.equals("data_service")) {
+					item.setDatas(ServiceUtil2.data_service(param.getBuilding(), item.getMeter(), item.getFuncid(), item.getTime_period(),
+							item.getData_time_from(), item.getData_time_to()));
+				} else if (command.equals("data_near")) {
+					item.setDatas(ServiceUtil2.data_near(param.getBuilding(), item.getMeter(), item.getFuncid(), item.getTime_period(),
+							item.getData_time_from(), item.getData_time_to()));
+				} else if (command.equals("data_near_0")) {
+					item.setDatas(ServiceUtil2.data_near_0(param.getBuilding(), item.getMeter(), item.getFuncid(), item.getTime_period(),
+							item.getData_time_from(), item.getData_time_to()));
+				} else if (command.equals("data_near_1")) {
+					item.setDatas(ServiceUtil2.data_near_1(param.getBuilding(), item.getMeter(), item.getFuncid(), item.getTime_period(),
+							item.getData_time_from(), item.getData_time_to()));
+				} else if (command.equals("data_near_2")) {
+					item.setDatas(ServiceUtil2.data_near_2(param.getBuilding(), item.getMeter(), item.getFuncid(), item.getTime_period(),
+							item.getData_time_from(), item.getData_time_to()));
+				}
+			}
+		}
+		return param;
+	}
+}

+ 72 - 0
src/main/java/com/persagy/service/ServiceImpl2.java.post

@@ -0,0 +1,72 @@
+package com.persagy.service;
+
+import javax.jws.WebResult;
+import javax.jws.WebService;
+
+import com.persagy.entity.WSBatchItem;
+import com.persagy.entity.WSBatchParam;
+import com.persagy.entity.WSParam;
+
+@WebService(endpointInterface = "com.persagy.service.IService2")
+public class ServiceImpl2 implements IService2 {
+	@WebResult
+	public WSParam Execute(String paramString) {
+		WSParam param = new WSParam(paramString);
+		String command = param.getCommand();
+		if (command.equals("data_energy")) {
+			param.setDatas(ServiceUtil2.data_energy(param.getBuilding(), param.getEnergyModelSign(), param.getEnergyModelNodeSign(),
+					param.getTime_period(), param.getData_time_from(), param.getData_time_to()));
+		} else if (command.equals("data_service")) {
+			param.setDatas(ServiceUtil2.data_service(param.getBuilding(), param.getMeter(), param.getFuncid(), param.getTime_period(),
+					param.getData_time_from(), param.getData_time_to()));
+		} else if (command.equals("data_near")) {
+			param.setDatas(ServiceUtil2.data_near(param.getBuilding(), param.getMeter(), param.getFuncid(), param.getTime_period(),
+					param.getData_time_from(), param.getData_time_to()));
+		} else if (command.equals("data_near_0")) {
+			param.setDatas(ServiceUtil2.data_near_0(param.getBuilding(), param.getMeter(), param.getFuncid(), param.getTime_period(),
+					param.getData_time_from(), param.getData_time_to()));
+		} else if (command.equals("data_near_1")) {
+			param.setDatas(ServiceUtil2.data_near_1(param.getBuilding(), param.getMeter(), param.getFuncid(), param.getTime_period(),
+					param.getData_time_from(), param.getData_time_to()));
+		} else if (command.equals("data_near_2")) {
+			param.setDatas(ServiceUtil2.data_near_2(param.getBuilding(), param.getMeter(), param.getFuncid(), param.getTime_period(),
+					param.getData_time_from(), param.getData_time_to()));
+		} else if (command.equals("write_fjd_2")) {
+			ServiceUtil2.write_fjd_2(param);
+		} else if (command.equals("present_building")) {
+			ServiceUtil2.present_building(param);
+		}
+		return param;
+	}
+
+	@WebResult
+	public WSBatchParam ExecuteBatch(String paramString) {
+		WSBatchParam param = new WSBatchParam(paramString);
+		String command = param.getCommand();
+		if (param.getItems() != null) {
+			WSBatchItem[] items = param.getItems();
+			for (WSBatchItem item : items) {
+				if (command.equals("data_energy")) {
+					item.setDatas(ServiceUtil2.data_energy(param.getBuilding(), item.getEnergyModelSign(), item.getEnergyModelNodeSign(),
+							item.getTime_period(), item.getData_time_from(), item.getData_time_to()));
+				} else if (command.equals("data_service")) {
+					item.setDatas(ServiceUtil2.data_service(param.getBuilding(), item.getMeter(), item.getFuncid(), item.getTime_period(),
+							item.getData_time_from(), item.getData_time_to()));
+				} else if (command.equals("data_near")) {
+					item.setDatas(ServiceUtil2.data_near(param.getBuilding(), item.getMeter(), item.getFuncid(), item.getTime_period(),
+							item.getData_time_from(), item.getData_time_to()));
+				} else if (command.equals("data_near_0")) {
+					item.setDatas(ServiceUtil2.data_near_0(param.getBuilding(), item.getMeter(), item.getFuncid(), item.getTime_period(),
+							item.getData_time_from(), item.getData_time_to()));
+				} else if (command.equals("data_near_1")) {
+					item.setDatas(ServiceUtil2.data_near_1(param.getBuilding(), item.getMeter(), item.getFuncid(), item.getTime_period(),
+							item.getData_time_from(), item.getData_time_to()));
+				} else if (command.equals("data_near_2")) {
+					item.setDatas(ServiceUtil2.data_near_2(param.getBuilding(), item.getMeter(), item.getFuncid(), item.getTime_period(),
+							item.getData_time_from(), item.getData_time_to()));
+				}
+			}
+		}
+		return param;
+	}
+}

+ 86 - 0
src/main/java/com/persagy/service/ServiceTenant.java

@@ -0,0 +1,86 @@
+package com.persagy.service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.jws.WebResult;
+import javax.jws.WebService;
+
+import org.zillion.util.json.FastJsonReaderUtil;
+
+import com.alibaba.fastjson.JSONObject;
+import com.persagy.entity.EntitySimple;
+import com.persagy.entity.WSEntity_tenant;
+import com.persagy.entity.WSEntity_tenants;
+
+@WebService(endpointInterface = "com.persagy.service.IServiceTenant")
+public class ServiceTenant implements IServiceTenant {
+	@WebResult
+	public EntitySimple GetSimple(String str) {
+		return new EntitySimple(str);
+	}
+
+	@WebResult
+	public void AddTenant(String str) throws Exception {
+		WSEntity_tenant param = new WSEntity_tenant(str);
+		List<WSEntity_tenant> tenantList = new ArrayList<WSEntity_tenant>();
+		tenantList.add(param);
+		ServiceTenantUtil.AddTenant(tenantList);
+	}
+
+	@WebResult
+	public void AddTenants(String str) throws Exception {
+		WSEntity_tenants param = new WSEntity_tenants(str);
+		List<WSEntity_tenant> tenantList = new ArrayList<WSEntity_tenant>();
+		WSEntity_tenant[] tenants = param.getTenants();
+		for (WSEntity_tenant tenant : tenants) {
+			if (tenant.getBuilding() == null) {
+				tenant.setBuilding(param.getBuilding());
+			}
+			tenantList.add(tenant);
+		}
+		ServiceTenantUtil.AddTenant(tenantList);
+	}
+
+	@WebResult
+	public void ModifyTenantPrice(String str) throws Exception {
+		JSONObject param = (JSONObject) FastJsonReaderUtil.Instance().parse(str);
+		String building = (String) param.get("building");
+		String sign = (String) param.get("sign");
+		String energy_type = (String) param.get("energy_type");
+		String valid_time_from = (String) param.get("valid_time_from");
+		String price_content = (String) param.get("price_content");
+		ServiceTenantUtil.ModifyTenantPrice(building, sign, energy_type, valid_time_from, price_content);
+	}
+
+	@WebResult
+	public void ModifyTenantPrice_before(String str) throws Exception {
+		JSONObject param = (JSONObject) FastJsonReaderUtil.Instance().parse(str);
+		String building = (String) param.get("building");
+		String sign = (String) param.get("sign");
+		String energy_type = (String) param.get("energy_type");
+		String valid_time_from = (String) param.get("valid_time_from");
+		String price_content = (String) param.get("price_content");
+		ServiceTenantUtil.ModifyTenantPrice_before(building, sign, energy_type, valid_time_from, price_content);
+	}
+
+	@WebResult
+	public void DeleteTenant(String building, String sign) throws Exception {
+		ServiceTenantUtil.DeleteTenant(building, sign);
+	}
+
+	@WebResult
+	public void StopTenant(String building, String sign, String valid_time_to) throws Exception {
+		ServiceTenantUtil.StopTenant(building, sign, valid_time_to);
+	}
+
+	@WebResult
+	public void RechargeTenant(String building, String sign, String operate_time, Double amount) throws Exception {
+		ServiceTenantUtil.RechargeTenant(building, sign, operate_time, amount);
+	}
+
+	@WebResult
+	public void RechargeTenantEnergy(String building, String sign, String energy_type, String operate_time, Double amount) throws Exception {
+		ServiceTenantUtil.RechargeTenantEnergy(building, sign, energy_type, operate_time, amount);
+	}
+}

+ 309 - 0
src/main/java/com/persagy/service/ServiceTenantUtil.java

@@ -0,0 +1,309 @@
+package com.persagy.service;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.persagy.entity.WSEntity_point;
+import com.persagy.entity.WSEntity_tenant;
+import com.persagy.entity.WSEntity_tenant_energy;
+import com.persagy.entity.WSEntity_tenant_energy_meter;
+import com.persagy.util.ConstantWeb;
+import com.sagacloud.util.compute_engine.entity.Entity_ci_instance;
+import com.sagacloud.util.compute_engine.entity.Entity_ci_instanceinput;
+import com.sagacloud.util.compute_engine.entity.Entity_ci_instanceoutput;
+import com.sagacloud.util.compute_engine.util.ConstantCE;
+import com.sagacloud.util.compute_engine.util.InstanceUtil;
+import com.sagacloud.util.compute_engine.util.QueryUtil;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class ServiceTenantUtil {
+	public static void AddTenant(List<WSEntity_tenant> tenantList) throws Exception {
+		JSONArray InsertObjects_tenant = new JSONArray();
+		JSONArray InsertObjects_energy = new JSONArray();
+		JSONArray InsertObjects_price = new JSONArray();
+		JSONArray InsertObjects_meter = new JSONArray();
+		JSONArray InsertObjects_point = new JSONArray();
+		Map<String, WSEntity_point> pointMap = new HashMap<String, WSEntity_point>();
+		Map<String, Double> InputCTMap = new HashMap<String, Double>();
+		String building = null;
+		for (WSEntity_tenant tenant : tenantList) {
+			building = tenant.getBuilding();
+			JSONObject InsertObject_tenant = new JSONObject();
+			InsertObject_tenant.put("building", tenant.getBuilding());
+			InsertObject_tenant.put("sign", tenant.getSign());
+			InsertObject_tenant.put("valid_time_from", tenant.getValid_time_from());
+			InsertObject_tenant.put("soft_enable", tenant.getSoft_enable());
+			InsertObject_tenant.put("soft_initial_yuer", tenant.getSoft_initial_yuer());
+			InsertObjects_tenant.add(InsertObject_tenant);
+			if (tenant.getEnergys() == null) {
+				continue;
+			}
+			WSEntity_tenant_energy[] energys = tenant.getEnergys();
+			for (WSEntity_tenant_energy energy : energys) {
+				JSONObject InsertObject_energy = new JSONObject();
+				InsertObject_energy.put("building", tenant.getBuilding());
+				InsertObject_energy.put("sign", tenant.getSign());
+				InsertObject_energy.put("energy_type", energy.getEnergy_type());
+				InsertObject_energy.put("price_type", energy.getPrice_type());
+				InsertObject_energy.put("soft_enable", energy.getSoft_enable());
+				InsertObject_energy.put("soft_initial_yuer", energy.getSoft_initial_yuer());
+				InsertObjects_energy.add(InsertObject_energy);
+
+				JSONObject InsertObject_price = new JSONObject();
+				InsertObject_price.put("building", tenant.getBuilding());
+				InsertObject_price.put("sign", tenant.getSign());
+				InsertObject_price.put("energy_type", energy.getEnergy_type());
+
+				InsertObject_price.put("price_content", energy.getPrice_content());
+				InsertObjects_price.add(InsertObject_price);
+
+				if (energy.getMeters() == null) {
+					continue;
+				}
+				WSEntity_tenant_energy_meter[] meters = energy.getMeters();
+				for (WSEntity_tenant_energy_meter meter : meters) {
+					JSONObject InsertObject_meter = new JSONObject();
+					InsertObject_meter.put("building", tenant.getBuilding());
+					InsertObject_meter.put("sign", tenant.getSign());
+					InsertObject_meter.put("energy_type", energy.getEnergy_type());
+					InsertObject_meter.put("meter_sign", meter.getMeter_sign());
+					InsertObject_meter.put("share_ratio", meter.getShare_ratio());
+					InsertObject_meter.put("transformer_ratio", meter.getTransformer_ratio());
+					InsertObjects_meter.add(InsertObject_meter);
+					for (WSEntity_point point : meter.getPoints()) {
+						point.setMeter(meter.getMeter_sign());
+						String point_real_name = meter.getMeter_sign() + "_" + point.getFuncid();
+						if (meter.getTransformer_ratio() != null) {
+							InputCTMap.put(point_real_name, meter.getTransformer_ratio());
+						}
+						pointMap.put(point_real_name, point);
+						JSONObject InsertObject_point = new JSONObject();
+						InsertObject_point.put("building", tenant.getBuilding());
+						InsertObject_point.put("meter", point.getMeter());
+						InsertObject_point.put("funcid", point.getFuncid());
+						InsertObject_point.put("data_type", point.getData_type());
+						InsertObject_point.put("collect_cycle", point.getCollect_cycle());
+						InsertObject_point.put("system", "tenant");
+						InsertObjects_point.add(InsertObject_point);
+					}
+				}
+			}
+		}
+		QueryUtil.batch_insert(ConstantCE.database_name, "tenant_energy_price", InsertObjects_price);
+		QueryUtil.batch_insert(ConstantCE.database_name, "tenant_energy_meter", InsertObjects_meter);
+		QueryUtil.batch_insert(ConstantCE.database_name, "tenant_energy", InsertObjects_energy);
+		QueryUtil.batch_insert(ConstantCE.database_name, "tenant", InsertObjects_tenant);
+		QueryUtil.batch_insert(ConstantCE.database_name, "dy_pointlist", InsertObjects_point);
+
+		String instance_name = "servicedataoftenant";
+		List<WSEntity_point> pointList = new ArrayList<WSEntity_point>();
+		pointList.addAll(pointMap.values());
+
+		Entity_ci_instance instance_exist = InstanceUtil.Get(ConstantCE.database_name, building, instance_name);
+		Entity_ci_instance instance = SurveyUtil2.Generate_servicedata(building, instance_name, pointList, InputCTMap);
+		if (instance_exist == null) {
+			ServiceUtil.ci_instance_Update(instance);
+		} else {
+			InstanceUtil.Insert(ConstantCE.database_name, instance);
+		}
+		if (ConstantWeb.name2interval.containsKey(instance_name + "_max")) {
+			Entity_ci_instance instance_max = SurveyUtil.Convert_max(instance);
+			ServiceUtil.ci_instance_Update(instance_max);
+			if (instance_exist == null) {
+				ServiceUtil.ci_instance_Update(instance_max);
+			} else {
+				InstanceUtil.Insert(ConstantCE.database_name, instance_max);
+			}
+		}
+		{
+			Entity_ci_instance instance_tenant = new Entity_ci_instance();
+			instance_tenant.setObject_sign(building);
+			instance_tenant.setInstance_name("tenant");
+			instance_tenant.setFlag_valid(1L);
+			instance_tenant.setCompute_interval_seconds(ConstantWeb.name2interval.get("tenant"));
+			instance_tenant.setInputs(new Entity_ci_instanceinput[0]);
+			instance_tenant.setOutputs(new Entity_ci_instanceoutput[0]);
+			ServiceUtil.ci_instance_Update(instance_tenant);
+			if (ConstantWeb.name2interval.containsKey("tenant" + "_max")) {
+				Entity_ci_instance instance_max = SurveyUtil.Convert_max(instance_tenant);
+				ServiceUtil.ci_instance_Update(instance_max);
+				if (instance_exist == null) {
+					ServiceUtil.ci_instance_Update(instance_max);
+				} else {
+					InstanceUtil.Insert(ConstantCE.database_name, instance_max);
+				}
+			}
+		}
+	}
+
+	public static void DeleteTenant(String building, String sign) throws Exception {
+		JSONObject Criteria = new JSONObject();
+		Criteria.put("building", building);
+		Criteria.put("sign", sign);
+		QueryUtil.delete(ConstantCE.database_name, "tenant", Criteria);
+		QueryUtil.delete(ConstantCE.database_name, "tenant_energy", Criteria);
+		QueryUtil.delete(ConstantCE.database_name, "tenant_energy_meter", Criteria);
+		QueryUtil.delete(ConstantCE.database_name, "tenant_energy_price", Criteria);
+		QueryUtil.delete(ConstantCE.database_name, "tenant_recharge", Criteria);
+	}
+
+	public static void StopTenant(String building, String sign, String valid_time_to) throws Exception {
+		JSONObject Criteria = new JSONObject();
+		Criteria.put("building", building);
+		Criteria.put("sign", sign);
+		JSONObject Set = new JSONObject();
+		Set.put("valid_time_to", valid_time_to);
+		QueryUtil.update(ConstantCE.database_name, "tenant", Criteria, Set);
+	}
+
+	public static void ModifyTenantPrice(String building, String sign, String energy_type, String valid_time_from, String price_content)
+			throws Exception {
+		JSONObject Criteria = new JSONObject();
+		Criteria.put("building", building);
+		Criteria.put("sign", sign);
+		Criteria.put("energy_type", energy_type);
+		JSONArray Content = QueryUtil.select(ConstantCE.database_name, "tenant_energy_price", Criteria);
+		for (int i = 0; i < Content.size(); i++) {
+			JSONObject price = (JSONObject) Content.get(i);
+			JSONObject priceNext = null;
+			if (i < Content.size() - 1) {
+				priceNext = (JSONObject) Content.get(i + 1);
+			}
+			if (priceNext == null) {
+				JSONObject CriteriaInner = new JSONObject();
+				CriteriaInner.put("building", building);
+				CriteriaInner.put("sign", sign);
+				CriteriaInner.put("energy_type", energy_type);
+				CriteriaInner.put("valid_time_from", price.get("valid_time_from"));
+				JSONObject SetInner = new JSONObject();
+				SetInner.put("valid_time_to", valid_time_from);
+				QueryUtil.update(ConstantCE.database_name, "tenant_energy_price", CriteriaInner, SetInner);
+				JSONObject InsertObject_price = new JSONObject();
+				InsertObject_price.put("building", building);
+				InsertObject_price.put("sign", sign);
+				InsertObject_price.put("energy_type", energy_type);
+				InsertObject_price.put("valid_time_from", valid_time_from);
+				InsertObject_price.put("price_content", price_content);
+				QueryUtil.insert(ConstantCE.database_name, "tenant_energy_price", InsertObject_price);
+				break;// 多余
+			} else {
+				String priceNext_time = (String) priceNext.get("valid_time_from");
+				if (priceNext_time.compareTo(valid_time_from) >= 0) {
+					JSONObject CriteriaInner = new JSONObject();
+					CriteriaInner.put("building", building);
+					CriteriaInner.put("sign", sign);
+					CriteriaInner.put("energy_type", energy_type);
+					CriteriaInner.put("valid_time_from", price.get("valid_time_from"));
+					JSONObject SetInner = new JSONObject();
+					SetInner.put("valid_time_to", valid_time_from);
+					QueryUtil.update(ConstantCE.database_name, "tenant_energy_price", CriteriaInner, SetInner);
+					if (priceNext_time.compareTo(valid_time_from) == 0) {
+						CriteriaInner = new JSONObject();
+						CriteriaInner.put("building", building);
+						CriteriaInner.put("sign", sign);
+						CriteriaInner.put("energy_type", energy_type);
+						CriteriaInner.put("valid_time_from", priceNext_time);
+						SetInner = new JSONObject();
+						SetInner.put("price_content", price_content);
+						QueryUtil.update(ConstantCE.database_name, "tenant_energy_price", CriteriaInner, SetInner);
+					} else {
+						JSONObject InsertObject_price = new JSONObject();
+						InsertObject_price.put("building", building);
+						InsertObject_price.put("sign", sign);
+						InsertObject_price.put("energy_type", energy_type);
+						InsertObject_price.put("valid_time_from", valid_time_from);
+						InsertObject_price.put("valid_time_to", priceNext_time);
+						InsertObject_price.put("price_content", price_content);
+						QueryUtil.insert(ConstantCE.database_name, "tenant_energy_price", InsertObject_price);
+					}
+					break;
+				}
+			}
+		}
+	}
+
+	public static void ModifyTenantPrice_before(String building, String sign, String energy_type, String valid_time_from, String price_content)
+			throws Exception {
+		JSONObject Criteria = new JSONObject();
+		Criteria.put("building", building);
+		Criteria.put("sign", sign);
+		Criteria.put("energy_type", energy_type);
+		JSONArray Content = QueryUtil.select(ConstantCE.database_name, "tenant_energy_price", Criteria);
+		for (int i = 0; i < Content.size(); i++) {
+			JSONObject price = (JSONObject) Content.get(i);
+			JSONObject priceNext = null;
+			if (i < Content.size() - 1) {
+				priceNext = (JSONObject) Content.get(i + 1);
+			}
+			if (priceNext == null) {
+				JSONObject CriteriaInner = new JSONObject();
+				CriteriaInner.put("building", building);
+				CriteriaInner.put("sign", sign);
+				CriteriaInner.put("energy_type", energy_type);
+				CriteriaInner.put("valid_time_from", price.get("valid_time_from"));
+				JSONObject SetInner = new JSONObject();
+				SetInner.put("valid_time_to", valid_time_from);
+				SetInner.put("price_content", price_content);
+				QueryUtil.update(ConstantCE.database_name, "tenant_energy_price", CriteriaInner, SetInner);
+				JSONObject InsertObject_price = new JSONObject();
+				InsertObject_price.put("building", building);
+				InsertObject_price.put("sign", sign);
+				InsertObject_price.put("energy_type", energy_type);
+				InsertObject_price.put("valid_time_from", valid_time_from);
+				InsertObject_price.put("price_content", price.get("price_content"));
+				QueryUtil.insert(ConstantCE.database_name, "tenant_energy_price", InsertObject_price);
+				break;// 多余
+			} else {
+				String priceNext_time = (String) priceNext.get("valid_time_from");
+				if (priceNext_time.compareTo(valid_time_from) >= 0) {
+					JSONObject CriteriaInner = new JSONObject();
+					CriteriaInner.put("building", building);
+					CriteriaInner.put("sign", sign);
+					CriteriaInner.put("energy_type", energy_type);
+					CriteriaInner.put("valid_time_from", price.get("valid_time_from"));
+					JSONObject SetInner = new JSONObject();
+					SetInner.put("valid_time_to", valid_time_from);
+					SetInner.put("price_content", price_content);
+					QueryUtil.update(ConstantCE.database_name, "tenant_energy_price", CriteriaInner, SetInner);
+					if (priceNext_time.compareTo(valid_time_from) == 0) {
+					} else {
+						JSONObject InsertObject_price = new JSONObject();
+						InsertObject_price.put("building", building);
+						InsertObject_price.put("sign", sign);
+						InsertObject_price.put("energy_type", energy_type);
+						InsertObject_price.put("valid_time_from", valid_time_from);
+						InsertObject_price.put("valid_time_to", priceNext_time);
+						InsertObject_price.put("price_content", price.get("price_content"));
+						QueryUtil.insert(ConstantCE.database_name, "tenant_energy_price", InsertObject_price);
+					}
+					break;
+				}
+			}
+		}
+	}
+
+	public static void RechargeTenant(String building, String sign, String operate_time, Double amount) throws Exception {
+		JSONObject InsertObject = new JSONObject();
+		InsertObject.put("building", building);
+		InsertObject.put("sign", sign);
+		InsertObject.put("energy_type", null);
+		InsertObject.put("operate_time", operate_time);
+		InsertObject.put("amount", amount);
+		InsertObject.put("is_used", null);
+		QueryUtil.insert(ConstantCE.database_name, "tenant_recharge", InsertObject);
+	}
+
+	public static void RechargeTenantEnergy(String building, String sign, String energy_type, String operate_time, Double amount) throws Exception {
+		JSONObject InsertObject = new JSONObject();
+		InsertObject.put("building", building);
+		InsertObject.put("sign", sign);
+		InsertObject.put("energy_type", energy_type);
+		InsertObject.put("operate_time", operate_time);
+		InsertObject.put("amount", amount);
+		InsertObject.put("is_used", null);
+		QueryUtil.insert(ConstantCE.database_name, "tenant_recharge", InsertObject);
+	}
+}

Разница между файлами не показана из-за своего большого размера
+ 1196 - 0
src/main/java/com/persagy/service/ServiceUtil.java


+ 210 - 0
src/main/java/com/persagy/service/ServiceUtil2.java

@@ -0,0 +1,210 @@
+package com.persagy.service;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.persagy.entity.WSData;
+import com.persagy.entity.WSData_fjd_2;
+import com.persagy.entity.WSParam;
+import com.persagy.util.ConstantWeb;
+import com.persagy.util.QueryUtil;
+import com.persagy.util.ZillionAgentUtil;
+import lombok.extern.slf4j.Slf4j;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Slf4j
+public class ServiceUtil2 {
+
+	public static WSData[] data_energy(String building, String energyModelSign, String energyModelNodeSign, String time_period, String data_time_from,
+			String data_time_to) {
+		try {
+			building = "Bd" + building + "001";
+			List<WSData> dataList_query = QueryUtil.GetDataEnergy(building, energyModelSign, energyModelNodeSign, time_period, data_time_from,
+					data_time_to);
+			return dataList_query.toArray(new WSData[0]);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+		return null;
+	}
+
+	public static WSData[] data_service(String building, String meter, Long funcid, String time_period, String data_time_from, String data_time_to) {
+		try {
+			List<WSData> dataList_query = QueryUtil.GetDataService(building, meter, funcid, time_period, data_time_from, data_time_to);
+			return dataList_query.toArray(new WSData[0]);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+		return null;
+	}
+
+	public static WSData[] data_near(String building, String meter, Long funcid, String time_period, String data_time_from, String data_time_to) {
+		try {
+			List<WSData> dataList_query = QueryUtil.GetDataNear(building, meter, funcid, time_period, data_time_from, data_time_to);
+			return dataList_query.toArray(new WSData[0]);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+		return null;
+	}
+
+	public static WSData[] data_near_0(String building, String meter, Long funcid, String time_period, String data_time_from, String data_time_to) {
+		try {
+			List<WSData> dataList_query = QueryUtil.GetDataNear(0, building, meter, funcid, time_period, data_time_from, data_time_to);
+			return dataList_query.toArray(new WSData[0]);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+		return null;
+	}
+
+	public static WSData[] data_near_1(String building, String meter, Long funcid, String time_period, String data_time_from, String data_time_to) {
+		try {
+			List<WSData> dataList_query = QueryUtil.GetDataNear(1, building, meter, funcid, time_period, data_time_from, data_time_to);
+			return dataList_query.toArray(new WSData[0]);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+		return null;
+	}
+
+	public static WSData[] data_near_2(String building, String meter, Long funcid, String time_period, String data_time_from, String data_time_to) {
+		try {
+			List<WSData> dataList_query = QueryUtil.GetDataNear(2, building, meter, funcid, time_period, data_time_from, data_time_to);
+			return dataList_query.toArray(new WSData[0]);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+		return null;
+	}
+
+	public static void write_fjd_2(WSParam param) {
+		try {
+			String fjd_i = "fjd_2";
+			if (ConstantWeb.fjd_3) {
+				fjd_i = "fjd_3";
+			}
+			SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
+			String building = param.getBuilding();
+
+			Long curround = null;
+			{
+				JSONObject Criteria = new JSONObject();
+				Criteria.put("object_sign", building);
+				Criteria.put("instance_name", fjd_i);
+				JSONArray resultContent = ZillionAgentUtil.select("ce_curround", Criteria);
+				if (resultContent.size() > 0) {
+					JSONObject ce_curround = (JSONObject) resultContent.get(0);
+					curround = (Long) ce_curround.get("compute_round");
+				}
+			}
+			if (curround == null) {
+				JSONObject Criteria = new JSONObject();
+				Criteria.put("building", building);
+				JSONArray resultContent = ZillionAgentUtil.select(fjd_i + "_computelog", Criteria);
+				if (resultContent.size() > 0) {
+					JSONObject dataItem = (JSONObject) resultContent.get(resultContent.size() - 1);
+					curround = (Long) dataItem.get("compute_round");
+				} else {
+					curround = 0L;
+				}
+			}
+			ZillionAgentUtil.Generate_round(building, fjd_i, curround + 1);
+
+			long compute_round = curround + 1;
+			String meter = param.getMeter();
+			long funcid = param.getFuncid();
+			WSData_fjd_2[] datas_fjd_2 = param.getDatas_fjd_2();
+			String time_from = null;
+			String time_to = null;
+			time_from = datas_fjd_2[0].getData_time();
+			time_to = datas_fjd_2[datas_fjd_2.length - 1].getData_time();
+
+			String[] time_periods = { "15min", "1h", "1d" };
+			for (String time_period : time_periods) {
+				QueryUtil.delete_fjd(fjd_i + "_near", building, meter, funcid, time_period, time_from, time_to);
+			}
+
+			Map<String, JSONArray> biggerInsertObjectsMap = new HashMap<String, JSONArray>();
+			JSONArray InsertObjects_near = new JSONArray();
+			for (WSData_fjd_2 data : datas_fjd_2) {
+				JSONObject InsertObject_near = new JSONObject();
+				InsertObject_near.put("building", building);
+				InsertObject_near.put("meter", meter);
+				InsertObject_near.put("funcid", funcid);
+				InsertObject_near.put("time_period", data.getTime_period());
+				InsertObject_near.put("data_time", data.getData_time());
+				InsertObject_near.put("data_flag", data.getData_flag());
+				InsertObject_near.put("data_value", data.getData_value());
+				InsertObjects_near.add(InsertObject_near);
+
+				Date data_time = sdf.parse(data.getData_time());
+				List<String> biggerList = QueryUtil.getBigger(data.getTime_period());
+				for (int i = 0; i < biggerList.size(); i++) {
+					String bigger = biggerList.get(i);
+					if (QueryUtil.DateMatch(bigger, data_time)) {
+						if (!biggerInsertObjectsMap.containsKey(bigger)) {
+							biggerInsertObjectsMap.put(bigger, new JSONArray());
+						}
+						JSONObject InsertObject = new JSONObject();
+						InsertObject.put("building", building);
+						InsertObject.put("meter", meter);
+						InsertObject.put("funcid", funcid);
+						InsertObject.put("time_period", bigger);
+						InsertObject.put("data_time", data.getData_time());
+						InsertObject.put("data_flag", data.getData_flag());
+						InsertObject.put("data_value", data.getData_value());
+						biggerInsertObjectsMap.get(bigger).add(InsertObject);
+					}
+				}
+			}
+
+			for (String bigger : biggerInsertObjectsMap.keySet()) {
+				JSONArray biggerInsertObjects = biggerInsertObjectsMap.get(bigger);
+				if (biggerInsertObjects.size() > 0) {
+					QueryUtil.batch_insert(fjd_i + "_near", biggerInsertObjects);
+				}
+			}
+			if (InsertObjects_near.size() > 0) {
+				QueryUtil.batch_insert(fjd_i + "_near", InsertObjects_near);
+			}
+
+			JSONObject InsertObject_detail = new JSONObject();
+			InsertObject_detail.put("building", building);
+			InsertObject_detail.put("compute_round", compute_round);
+			InsertObject_detail.put("meter", meter);
+			InsertObject_detail.put("funcid", funcid);
+			InsertObject_detail.put("valid_time_from", time_from);
+			InsertObject_detail.put("valid_time_to", time_to);
+			InsertObject_detail.put("operate_time_to", sdf.format(new Date()));
+			ZillionAgentUtil.insert(fjd_i + "_computedetail", InsertObject_detail);
+
+			JSONObject InsertObject_log = new JSONObject();
+			InsertObject_log.put("building", building);
+			InsertObject_log.put("compute_round", compute_round);
+			InsertObject_log.put("compute_time_from", time_from);
+			InsertObject_log.put("compute_time_to", time_to);
+			InsertObject_log.put("is_finished", 1L);
+			InsertObject_log.put("operate_time_from", sdf.format(new Date()));
+			InsertObject_log.put("operate_time_to", sdf.format(new Date()));
+			ZillionAgentUtil.insert(fjd_i + "_computelog", InsertObject_log);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		} finally {
+		}
+	}
+
+	public static void present_building(WSParam param) {
+		try {
+			String building = param.getBuilding();
+			param.setBuildingdatas(QueryUtil.GetBuildingdatas(building));
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+}

+ 637 - 0
src/main/java/com/persagy/service/SurveyUtil.java

@@ -0,0 +1,637 @@
+package com.persagy.service;
+
+import com.alibaba.fastjson.JSONObject;
+import com.pbsage.parser.emsiv.EMSLexer;
+import com.pbsage.parser.emsiv.EMSParser;
+import com.pbsage.parser.emsiv.EMSScanner;
+import com.persagy.util.ConstantAgent;
+import com.persagy.util.ConstantWeb;
+import com.persagy.wsentity.*;
+import com.sagacloud.util.compute_engine.entity.Entity_ci_instance;
+import com.sagacloud.util.compute_engine.entity.Entity_ci_instanceinput;
+import com.sagacloud.util.compute_engine.entity.Entity_ci_instanceoutput;
+import com.sagacloud.util.compute_engine.util.ConstantCE;
+import lombok.extern.slf4j.Slf4j;
+import org.antlr.runtime.ANTLRInputStream;
+import org.antlr.runtime.CommonTokenStream;
+import org.antlr.runtime.tree.CommonTree;
+import org.antlr.runtime.tree.CommonTreeNodeStream;
+
+import java.io.ByteArrayInputStream;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+@Slf4j
+public class SurveyUtil {
+	public static SSurveyResult Check(SSurvey survey) {
+		SSurveyResult result = new SSurveyResult();
+		result.setProjectSign(survey.getProjectSign());
+
+		return result;
+	}
+
+	public static Entity_ci_instance Convert_max(Entity_ci_instance instance) throws Exception {
+		String object_sign = instance.getObject_sign();
+		String source_instance_name = instance.getInstance_name();
+		String instance_name = instance.getInstance_name() + "_max";
+		Entity_ci_instance result = new Entity_ci_instance();
+		result.setObject_sign(object_sign);
+		result.setInstance_name(instance_name);
+		result.setFlag_valid(1L);
+		result.setCompute_interval_seconds(ConstantWeb.name2interval.get(instance_name));
+
+		List<Entity_ci_instanceinput> inputList = new ArrayList<Entity_ci_instanceinput>();
+		List<Entity_ci_instanceoutput> outputList = new ArrayList<Entity_ci_instanceoutput>();
+
+		Entity_ci_instanceoutput[] outputs_tmp = instance.getOutputs();
+		for (Entity_ci_instanceoutput output_tmp : outputs_tmp) {
+			Entity_ci_instanceinput input = new Entity_ci_instanceinput();
+			input.setObject_sign(object_sign);
+			input.setInstance_name(instance_name);
+			input.setInput_sign(output_tmp.getOutput_sign());
+			input.setTime_period(output_tmp.getTime_period());
+			input.setData_class(output_tmp.getData_class());
+			input.setDao_type(output_tmp.getDao_type());
+			input.setDao_key(output_tmp.getDao_key());
+			input.setSource_object_sign(object_sign);
+			input.setSource_instance_name(source_instance_name);
+			input.setSource_output_sign(output_tmp.getOutput_sign());
+			inputList.add(input);
+
+			Entity_ci_instanceoutput output = new Entity_ci_instanceoutput();
+			output.setObject_sign(object_sign);
+			output.setInstance_name(instance_name);
+			output.setOutput_sign(output_tmp.getOutput_sign());
+			output.setTime_begin(output_tmp.getTime_begin());
+			output.setTime_end(output_tmp.getTime_end());
+			output.setData_class(output_tmp.getData_class());
+			output.setDao_type(output_tmp.getDao_type() + "_max");
+			output.setDao_key(output_tmp.getDao_key());
+			output.setNeed_all_var_data(false);
+			output.setTime_period_intialized(true);
+			output.setTime_period(output_tmp.getTime_period());
+			output.setMode("expression");
+			output.setExpression(output_tmp.getOutput_sign());
+			outputList.add(output);
+		}
+
+		result.setInputs(inputList.toArray(new Entity_ci_instanceinput[0]));
+		result.setOutputs(outputList.toArray(new Entity_ci_instanceoutput[0]));
+
+		return result;
+	}
+
+	public static List<Entity_ci_instance> Generate_EMS(SSurvey survey) throws Exception {
+		List<Entity_ci_instance> result = new ArrayList<Entity_ci_instance>();
+
+		String projectSign = survey.getProjectSign();
+		String collectBuildingSign = projectSign.substring(2);
+		SBuilding[] buildingArray = survey.getBuildingArray();
+		for (SBuilding building : buildingArray) {
+			Entity_ci_instance instance = Generate_EMS(projectSign, collectBuildingSign, survey.getMeterArray(), building);
+			result.add(instance);
+		}
+
+		return result;
+	}
+
+	public static Entity_ci_instance Generate_servicedata(String collectBuildingSign, SMeter[] meterArray) throws Exception {
+		String time_period = "15min";
+
+		String object_sign = collectBuildingSign;
+		String instance_name = "servicedata";
+		Entity_ci_instance instance = new Entity_ci_instance();
+		instance.setObject_sign(object_sign);
+		instance.setInstance_name(instance_name);
+		instance.setFlag_valid(1L);
+		instance.setCompute_interval_seconds(ConstantWeb.name2interval.get(instance_name));
+
+		String building = object_sign;
+		List<Entity_ci_instanceinput> inputList = new ArrayList<Entity_ci_instanceinput>();
+		List<Entity_ci_instanceoutput> outputList = new ArrayList<Entity_ci_instanceoutput>();
+		for (SMeter meter : meterArray) {
+			String detail_meter = meter.getMeterSign();
+			long detail_funcid = meter.getFuncid();
+			{
+				Entity_ci_instanceinput input = new Entity_ci_instanceinput();
+				input.setObject_sign(object_sign);
+				input.setInstance_name(instance_name);
+				input.setInput_sign("meterdata_" + detail_meter + "_" + detail_funcid);
+				input.setTime_period(time_period);
+				input.setData_class("near");
+				input.setDao_type("fjd_near");
+				JSONObject dao_key = new JSONObject();
+				dao_key.put("building", building);
+				dao_key.put("meter", detail_meter);
+				dao_key.put("funcid", detail_funcid);
+				input.setDao_key(dao_key.toJSONString());
+				input.setSource_object_sign(building);
+				input.setSource_instance_name("fjd");
+				input.setSource_output_sign(detail_meter + "_" + detail_funcid);
+				inputList.add(input);
+			}
+			{
+				Entity_ci_instanceoutput output = new Entity_ci_instanceoutput();
+				output.setObject_sign(object_sign);
+				output.setInstance_name(instance_name);
+				output.setOutput_sign("servicedata_" + detail_meter + "_" + detail_funcid);
+				output.setTime_begin("19700101000000");
+				output.setTime_end("99990101000000");
+				output.setData_class("consumption");
+				output.setDao_type("servicedata");
+				JSONObject dao_key = new JSONObject();
+				dao_key.put("building", building);
+				dao_key.put("meter", detail_meter);
+				dao_key.put("funcid", detail_funcid);
+				output.setDao_key(dao_key.toJSONString());
+				output.setNeed_all_var_data(true);
+				output.setTime_period_intialized(true);
+				output.setTime_period(time_period);
+				output.setMode("expression");
+				String expression;
+				if (meter.getCt() != null) {
+					expression = "(meterdata_" + detail_meter + "_" + detail_funcid + "'+1-" + "meterdata_" + detail_meter + "_" + detail_funcid
+							+ ")*" + meter.getCt();
+				} else {
+					expression = "meterdata_" + detail_meter + "_" + detail_funcid + "'+1-" + "meterdata_" + detail_meter + "_" + detail_funcid;
+				}
+				output.setExpression(expression);
+				outputList.add(output);
+			}
+		}
+
+		instance.setInputs(inputList.toArray(new Entity_ci_instanceinput[0]));
+		instance.setOutputs(outputList.toArray(new Entity_ci_instanceoutput[0]));
+
+		return instance;
+	}
+
+	private static Entity_ci_instance Generate_EMS(String projectSign, String collectBuildingSign, SMeter[] meterArray, SBuilding building)
+			throws Exception {
+		String time_period = "15min";
+
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
+		SimpleDateFormat sdf_ = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+		String object_sign = building.getBuildingSign();
+		String instance_name = "EMS";
+		Entity_ci_instance instance = new Entity_ci_instance();
+		instance.setObject_sign(object_sign);
+		instance.setInstance_name(instance_name);
+		instance.setFlag_valid(1L);
+		instance.setCompute_interval_seconds(ConstantWeb.name2interval.get(instance_name));
+
+		Map<String, SMeter> meterMap = new HashMap<String, SMeter>();
+		for (SMeter meter : meterArray) {
+			meterMap.put(meter.getMeterSign(), meter);
+		}
+
+		Map<String, SEnergyModel> EnergyModelMap = new HashMap<String, SEnergyModel>();
+		SEnergyModel[] EnergyModelArray = building.getEnergyModelArray();
+		for (SEnergyModel EnergyModel : EnergyModelArray) {
+			EnergyModelMap.put(EnergyModel.getEnergyModelSign(), EnergyModel);
+		}
+
+		Map<String, SBuildingConfig> BuildingConfigMap = new HashMap<String, SBuildingConfig>();
+		SBuildingConfig[] BuildingConfigArray = building.getBuildingConfigArray();
+		for (SBuildingConfig energyModel : BuildingConfigArray) {
+			BuildingConfigMap.put(energyModel.getBuildingConfigSign(), energyModel);
+		}
+
+		List<Entity_ci_instanceinput> inputList = new ArrayList<Entity_ci_instanceinput>();
+		List<Entity_ci_instanceoutput> outputList = new ArrayList<Entity_ci_instanceoutput>();
+		Map<String, Boolean> InputMap = new HashMap<String, Boolean>();
+		SBuildingConfigUse[] buildingConfigUseArray = building.getBuildingConfigUseArray();
+		for (SBuildingConfigUse bcu : buildingConfigUseArray) {
+			SBuildingConfig BuildingConfig = BuildingConfigMap.get(bcu.getBuildingConfigSign());
+			SEnergyModel EnergyModel = EnergyModelMap.get(BuildingConfig.getEnergyModelSign());
+			SResearchNode[] ResearchNodeArray = BuildingConfig.getResearchNodeArray();
+			Map<String, List<SResearchNode>> childrenMap = new HashMap<String, List<SResearchNode>>();
+			for (SResearchNode node : ResearchNodeArray) {
+				if (node.getParentSign() != null) {
+					if (!childrenMap.containsKey(node.getParentSign())) {
+						childrenMap.put(node.getParentSign(), new ArrayList<SResearchNode>());
+					}
+					childrenMap.get(node.getParentSign()).add(node);
+				}
+			}
+
+			Map<String, String> unit2ExpressionMap = new HashMap<String, String>();
+			SComputeUnit[] ComputeUnitArray = BuildingConfig.getComputeUnitArray();
+			if (ComputeUnitArray != null) {
+				for (SComputeUnit entity : ComputeUnitArray) {
+					try {
+						CommonTreeNodeStream nodes = GenerateParser(entity.getExpression());
+						EMSScanner scanner = new EMSScanner(nodes);
+						scanner.prog();
+						String[] vars = scanner.GetVarDict().keySet().toArray(new String[0]);
+						Map<String, String> old2newMap = new HashMap<String, String>();
+						String new_expression = entity.getExpression();
+						for (int index_var = 0; index_var < vars.length; index_var++) {
+							String var = vars[index_var];
+							String MeterSign;
+							long FunctionTypeId;
+							String varPart = var;
+							int index_dot = varPart.indexOf('.');
+							if (index_dot == -1) {
+								MeterSign = varPart;
+								FunctionTypeId = meterMap.get(MeterSign).getFuncid();
+							} else {
+								MeterSign = varPart.substring(0, index_dot);
+								FunctionTypeId = Integer.parseInt(varPart.substring(index_dot + 1));
+							}
+							if (ConstantWeb.funcid_10101_to_0) {
+								if (FunctionTypeId == 10101) {
+									FunctionTypeId = 0;
+								}
+							}
+							if (!InputMap.containsKey(MeterSign + "_" + FunctionTypeId)) {
+								InputMap.put(MeterSign + "_" + FunctionTypeId, true);
+							}
+							if (!ConstantCE.servicedata_use_survey && meterMap.containsKey(MeterSign) && meterMap.get(MeterSign).getCt() != null) {
+								old2newMap.put(var, "servicedata_" + MeterSign + "_" + FunctionTypeId + "*" + meterMap.get(MeterSign).getCt());
+							} else {
+								old2newMap.put(var, "servicedata_" + MeterSign + "_" + FunctionTypeId);
+							}
+						}
+						for (int index_var = 0; index_var < vars.length; index_var++) {
+							String var = vars[index_var];
+							int index_dot = var.indexOf('.');
+							if (index_dot == -1) {
+								new_expression = new_expression.replaceAll("\\[" + var + "\\]", old2newMap.get(var));
+							} else {
+								new_expression = new_expression.replaceAll(
+										"\\[" + var.substring(0, index_dot) + "\\." + var.substring(index_dot + 1) + "\\]", old2newMap.get(var));
+							}
+						}
+
+						unit2ExpressionMap.put(entity.getSign(), new_expression);
+					} catch (Exception e) {
+						log.error(e.getMessage(),e);
+					}
+				}
+			}
+
+			Map<String, String> node2ExpressionMap = new HashMap<String, String>();
+			SEnergyModelExpression[] EnergyModelExpressionArray = BuildingConfig.getEnergyModelExpressionArray();
+			if (EnergyModelExpressionArray != null) {
+				for (SEnergyModelExpression entity : EnergyModelExpressionArray) {
+					try {
+						CommonTreeNodeStream nodes = GenerateParser(entity.getExpression());
+						EMSScanner scanner = new EMSScanner(nodes);
+						scanner.prog();
+						String[] vars = scanner.GetVarDict().keySet().toArray(new String[0]);
+						Map<String, String> old2newMap = new HashMap<String, String>();
+						String new_expression = entity.getExpression();
+						for (int index_var = 0; index_var < vars.length; index_var++) {
+							String var = vars[index_var];
+							String MeterSign;
+							long FunctionTypeId;
+							String varPart = var;
+							int index_dot = varPart.indexOf('.');
+							if (index_dot == -1) {
+								MeterSign = varPart;
+								FunctionTypeId = meterMap.get(MeterSign).getFuncid();
+							} else {
+								MeterSign = varPart.substring(0, index_dot);
+								FunctionTypeId = Integer.parseInt(varPart.substring(index_dot + 1));
+							}
+							if (ConstantWeb.funcid_10101_to_0) {
+								if (FunctionTypeId == 10101) {
+									FunctionTypeId = 0;
+								}
+							}
+							if (!InputMap.containsKey(MeterSign + "_" + FunctionTypeId)) {
+								InputMap.put(MeterSign + "_" + FunctionTypeId, true);
+							}
+							if (!ConstantCE.servicedata_use_survey && meterMap.containsKey(MeterSign) && meterMap.get(MeterSign).getCt() != null) {
+								old2newMap.put(var, "servicedata_" + MeterSign + "_" + FunctionTypeId + "*" + meterMap.get(MeterSign).getCt());
+							} else {
+								old2newMap.put(var, "servicedata_" + MeterSign + "_" + FunctionTypeId);
+							}
+						}
+						for (int index_var = 0; index_var < vars.length; index_var++) {
+							String var = vars[index_var];
+							int index_dot = var.indexOf('.');
+							if (index_dot == -1) {
+								new_expression = new_expression.replaceAll("\\[" + var + "\\]", old2newMap.get(var));
+							} else {
+								new_expression = new_expression.replaceAll(
+										"\\[" + var.substring(0, index_dot) + "\\." + var.substring(index_dot + 1) + "\\]", old2newMap.get(var));
+							}
+						}
+						node2ExpressionMap.put(entity.getSign(), new_expression);
+					} catch (Exception e) {
+						log.error(e.getMessage(),e);
+					}
+				}
+			}
+
+			Map<String, List<SResearchNode>> ModelChildrenMap = new HashMap<String, List<SResearchNode>>();
+			for (SResearchNode node : ResearchNodeArray) {
+				if (!childrenMap.containsKey(node.getSign())) {
+					if (node.getEnergyModelNodeSign() != null) {
+						if (!ModelChildrenMap.containsKey(node.getEnergyModelNodeSign())) {
+							ModelChildrenMap.put(node.getEnergyModelNodeSign(), new ArrayList<SResearchNode>());
+						}
+						ModelChildrenMap.get(node.getEnergyModelNodeSign()).add(node);
+					}
+				}
+			}
+
+			Map<String, List<SEnergyModelNode>> Model2ModelListMap = new HashMap<String, List<SEnergyModelNode>>();
+			for (SEnergyModelNode node : EnergyModel.getNodeArray()) {
+				if (node.getParentSign() != null) {
+					if (!Model2ModelListMap.containsKey(node.getParentSign())) {
+						Model2ModelListMap.put(node.getParentSign(), new ArrayList<SEnergyModelNode>());
+					}
+					Model2ModelListMap.get(node.getParentSign()).add(node);
+				}
+			}
+
+			Map<String, String> finishMap = new HashMap<String, String>();
+			while (true) {
+				boolean has_change = false;
+				for (SEnergyModelNode node : EnergyModel.getNodeArray()) {
+					if (finishMap.containsKey(node.getSign())) {
+						continue;
+					}
+
+					boolean children_finsh = true;
+					if (Model2ModelListMap.containsKey(node.getSign())) {
+						List<SEnergyModelNode> children = Model2ModelListMap.get(node.getSign());
+						for (SEnergyModelNode child : children) {
+							if (!finishMap.containsKey(child.getSign())) {
+								children_finsh = false;
+								break;
+							}
+						}
+					}
+
+					if (children_finsh) {
+						has_change = true;
+						if (node2ExpressionMap.containsKey(node.getSign())) {
+							finishMap.put(node.getSign(), node2ExpressionMap.get(node.getSign()));
+						} else {
+							StringBuffer sb = new StringBuffer();
+							if (Model2ModelListMap.containsKey(node.getSign())) {
+								List<SEnergyModelNode> children = Model2ModelListMap.get(node.getSign());
+								for (SEnergyModelNode child : children) {
+									String expression = finishMap.get(child.getSign());
+									if (expression != null && expression.length() > 0) {
+										if (sb.length() > 0) {
+											sb.append("+");
+										}
+										sb.append("(" + finishMap.get(child.getSign()) + ")");
+									}
+								}
+							}
+							if (ModelChildrenMap.containsKey(node.getSign())) {
+								List<SResearchNode> ResearchNodeList = ModelChildrenMap.get(node.getSign());
+								for (SResearchNode ResearchNode : ResearchNodeList) {
+									if (ResearchNode.getIsComputeUnit().equals("Y")) {
+										if (sb.length() > 0) {
+											sb.append("+");
+										}
+										sb.append("(" + unit2ExpressionMap.get(ResearchNode.getSign()) + ")");
+									} else {
+										if (ResearchNode.getMeter() != null) {
+											String MeterSign = ResearchNode.getMeter();
+											long FunctionTypeId = meterMap.get(MeterSign).getFuncid();
+											if (ConstantWeb.funcid_10101_to_0) {
+												if (FunctionTypeId == 10101) {
+													FunctionTypeId = 0;
+												}
+											}
+											if (!InputMap.containsKey(MeterSign + "_" + FunctionTypeId)) {
+												InputMap.put(MeterSign + "_" + FunctionTypeId, true);
+											}
+
+											if (sb.length() > 0) {
+												sb.append("+");
+											}
+											if (!ConstantCE.servicedata_use_survey && meterMap.containsKey(MeterSign)
+													&& meterMap.get(MeterSign).getCt() != null) {
+												sb.append("servicedata_" + MeterSign + "_" + FunctionTypeId + "*" + meterMap.get(MeterSign).getCt());
+											} else {
+												sb.append("servicedata_" + MeterSign + "_" + FunctionTypeId);
+											}
+										}
+									}
+								}
+							}
+
+							finishMap.put(node.getSign(), sb.toString());
+						}
+
+					}
+				}
+				if (!has_change) {
+					break;
+				}
+			}
+
+			String time_begin = sdf.format(sdf_.parse(bcu.getBcuseFrom()));
+			String time_end = sdf.format(sdf_.parse(bcu.getBcuseTo()));
+
+			if (ConstantCE.servicedata_use_survey) {
+				for (SResearchNode node : ResearchNodeArray) {
+					if (node.getMeter() == null) {
+						continue;
+					}
+					if (!childrenMap.containsKey(node.getSign())) {
+						continue;
+					}
+					List<SResearchNode> children = childrenMap.get(node.getSign());
+					List<String> meter_children = new ArrayList<String>();
+					for (SResearchNode child : children) {
+						if (child.getMeter() != null) {
+							meter_children.add(child.getMeter());
+						}
+					}
+					if (meter_children.size() > 0) {
+						String parentMeterSign = node.getMeter();
+						long parentFunctionTypeId = meterMap.get(parentMeterSign).getFuncid();
+						if (ConstantWeb.funcid_10101_to_0) {
+							if (parentFunctionTypeId == 10101) {
+								parentFunctionTypeId = 0;
+							}
+						}
+
+						StringBuffer sb = new StringBuffer();
+						for (String meter_child : meter_children) {
+							String MeterSign = meter_child;
+							long FunctionTypeId = meterMap.get(MeterSign).getFuncid();
+							if (ConstantWeb.funcid_10101_to_0) {
+								if (FunctionTypeId == 10101) {
+									FunctionTypeId = 0;
+								}
+							}
+							if (!InputMap.containsKey(MeterSign + "_" + FunctionTypeId)) {
+								InputMap.put(MeterSign + "_" + FunctionTypeId, true);
+							}
+							if (sb.length() > 0) {
+								sb.append("+");
+							}
+							sb.append("servicedata_" + MeterSign + "_" + FunctionTypeId);
+						}
+						String expression = sb.toString();
+
+						Entity_ci_instanceoutput output = new Entity_ci_instanceoutput();
+						output.setObject_sign(object_sign);
+						output.setInstance_name(instance_name);
+						output.setOutput_sign("servicedata_children_" + node.getMeter());
+						output.setTime_begin(time_begin);
+						output.setTime_end(time_end);
+						output.setData_class("consumption");
+						output.setDao_type("servicedata");
+						JSONObject dao_key = new JSONObject();
+						dao_key.put("building", collectBuildingSign);
+						dao_key.put("meter", "children_" + parentMeterSign);
+						dao_key.put("funcid", parentFunctionTypeId);
+						output.setDao_key(dao_key.toJSONString());
+						output.setNeed_all_var_data(false);
+						output.setTime_period_intialized(true);
+						output.setTime_period(time_period);
+						output.setMode("expression");
+						output.setExpression(expression);
+						outputList.add(output);
+					}
+				}
+			}
+
+			for (SResearchNode entity : ResearchNodeArray) {
+				if (entity.getIsComputeUnit().equals("Y")) {
+					String expression = unit2ExpressionMap.get(entity.getSign());
+
+					Entity_ci_instanceoutput output = new Entity_ci_instanceoutput();
+					output.setObject_sign(object_sign);
+					output.setInstance_name(instance_name);
+					output.setOutput_sign("objectdata_" + entity.getSign());
+					output.setTime_begin(time_begin);
+					output.setTime_end(time_end);
+					output.setData_class("consumption");
+					output.setDao_type("objectdata");
+					JSONObject dao_key = new JSONObject();
+					dao_key.put("building", projectSign);
+					dao_key.put("objectSign", entity.getSign());
+					output.setDao_key(dao_key.toJSONString());
+					output.setNeed_all_var_data(false);
+					output.setTime_period_intialized(true);
+					output.setTime_period(time_period);
+					output.setMode("expression");
+					output.setExpression(expression);
+					outputList.add(output);
+				} else {
+					if (ConstantAgent.objectdata_Service) {
+						if (entity.getMeter() != null) {
+							String MeterSign = entity.getMeter();
+							long FunctionTypeId = meterMap.get(MeterSign).getFuncid();
+							if (ConstantWeb.funcid_10101_to_0) {
+								if (FunctionTypeId == 10101) {
+									FunctionTypeId = 0;
+								}
+							}
+							if (!InputMap.containsKey(MeterSign + "_" + FunctionTypeId)) {
+								InputMap.put(MeterSign + "_" + FunctionTypeId, true);
+							}
+							String expression;
+							if (!ConstantCE.servicedata_use_survey && meterMap.containsKey(MeterSign) && meterMap.get(MeterSign).getCt() != null) {
+								expression = "servicedata_" + MeterSign + "_" + FunctionTypeId + "*" + meterMap.get(MeterSign).getCt();
+							} else {
+								expression = "servicedata_" + MeterSign + "_" + FunctionTypeId;
+							}
+
+							Entity_ci_instanceoutput output = new Entity_ci_instanceoutput();
+							output.setObject_sign(object_sign);
+							output.setInstance_name(instance_name);
+							output.setOutput_sign("objectdata_" + entity.getSign());
+							output.setTime_begin(time_begin);
+							output.setTime_end(time_end);
+							output.setData_class("consumption");
+							output.setDao_type("objectdata");
+							JSONObject dao_key = new JSONObject();
+							dao_key.put("building", building.getBuildingSign());
+							dao_key.put("objectSign", entity.getSign());
+							output.setDao_key(dao_key.toJSONString());
+							output.setNeed_all_var_data(false);
+							output.setTime_period_intialized(true);
+							output.setTime_period(time_period);
+							output.setMode("expression");
+							output.setExpression(expression);
+							outputList.add(output);
+						}
+					}
+				}
+			}
+			for (SEnergyModelNode node : EnergyModel.getNodeArray()) {
+				String expression = finishMap.get(node.getSign());
+				if (expression.length() == 0) {
+					continue;
+				}
+
+				Entity_ci_instanceoutput output = new Entity_ci_instanceoutput();
+				output.setObject_sign(object_sign);
+				output.setInstance_name(instance_name);
+				output.setOutput_sign("energydata_" + node.getSign());
+				output.setTime_begin(time_begin);
+				output.setTime_end(time_end);
+				output.setData_class("consumption");
+				output.setDao_type("energydata");
+				JSONObject dao_key = new JSONObject();
+				dao_key.put("building", building.getBuildingSign());
+				dao_key.put("energyModelSign", bcu.getEnergyModelSign());
+				dao_key.put("energyModelNodeSign", node.getSign());
+				output.setDao_key(dao_key.toJSONString());
+				output.setNeed_all_var_data(false);
+				output.setTime_period_intialized(true);
+				output.setTime_period(time_period);
+				output.setMode("expression");
+				output.setExpression(expression);
+				outputList.add(output);
+			}
+		}
+
+		for (String input_sign : InputMap.keySet()) {
+			int index_ = input_sign.lastIndexOf('_');
+			String meter = input_sign.substring(0, index_);
+			long funcid = Long.parseLong(input_sign.substring(index_ + 1));
+			Entity_ci_instanceinput input = new Entity_ci_instanceinput();
+			input.setObject_sign(object_sign);
+			input.setInstance_name(instance_name);
+			input.setInput_sign("servicedata_" + input_sign);
+			input.setTime_period(time_period);
+			input.setData_class("consumption");
+			input.setDao_type("servicedata");
+			JSONObject dao_key = new JSONObject();
+			dao_key.put("building", projectSign.substring("Pj".length()));
+			dao_key.put("meter", meter);
+			dao_key.put("funcid", funcid);
+			input.setDao_key(dao_key.toJSONString());
+			input.setSource_object_sign(collectBuildingSign);
+			input.setSource_instance_name("servicedata");
+			input.setSource_output_sign("servicedata_" + input_sign);
+			inputList.add(input);
+		}
+
+		instance.setInputs(inputList.toArray(new Entity_ci_instanceinput[0]));
+		instance.setOutputs(outputList.toArray(new Entity_ci_instanceoutput[0]));
+
+		return instance;
+	}
+
+	private static CommonTreeNodeStream GenerateParser(String expression) throws Exception {
+		ANTLRInputStream input = new ANTLRInputStream(new ByteArrayInputStream((expression + "$").getBytes()));
+		EMSLexer lexer = new EMSLexer(input);
+		CommonTokenStream tokens = new CommonTokenStream(lexer);
+		EMSParser parser = new EMSParser(tokens);
+		EMSParser.prog_return r = parser.prog();
+
+		CommonTree t = (CommonTree) r.getTree();
+		CommonTreeNodeStream nodes = new CommonTreeNodeStream(t);
+		nodes.setTokenStream(tokens);
+
+		return nodes;
+	}
+}

+ 729 - 0
src/main/java/com/persagy/service/SurveyUtil2.java

@@ -0,0 +1,729 @@
+package com.persagy.service;
+
+import java.io.ByteArrayInputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.antlr.runtime.ANTLRInputStream;
+import org.antlr.runtime.CommonTokenStream;
+import org.antlr.runtime.tree.CommonTree;
+import org.antlr.runtime.tree.CommonTreeNodeStream;
+
+import com.alibaba.fastjson.JSONObject;
+import com.pbsage.parser.emsiv.EMSLexer;
+import com.pbsage.parser.emsiv.EMSParser;
+import com.pbsage.parser.emsiv.EMSScanner;
+import com.persagy.entity.WSEntity_point;
+import com.persagy.util.ConstantWeb;
+import com.persagy.wsentity2.TBranch;
+import com.persagy.wsentity2.TCalculateUnit;
+import com.persagy.wsentity2.TCalculateUnit2EnergyItem;
+import com.persagy.wsentity2.TConfigUse;
+import com.persagy.wsentity2.TConfigUseItem;
+import com.persagy.wsentity2.TEnergyItem;
+import com.persagy.wsentity2.TEnergyModel;
+import com.persagy.wsentity2.TMeter;
+import com.persagy.wsentity2.TSurvey;
+import com.persagy.wsentity2.TSurveyResult;
+import com.sagacloud.parser.simulator.ComputeEngineLexer;
+import com.sagacloud.parser.simulator.ComputeEngineParser;
+import com.sagacloud.parser.simulator.ComputeEngineScanner;
+import com.sagacloud.util.compute_engine.entity.Entity_ci_instance;
+import com.sagacloud.util.compute_engine.entity.Entity_ci_instanceinput;
+import com.sagacloud.util.compute_engine.entity.Entity_ci_instanceoutput;
+
+public class SurveyUtil2 {
+	public static TSurveyResult Check(TSurvey survey) {
+		TSurveyResult result = new TSurveyResult();
+		result.setProjectSign(survey.getProjectSign());
+
+		return result;
+	}
+
+	public static Entity_ci_instance Generate_servicedata(String collectBuildingSign, List<WSEntity_point> pointList, Map<String, Double> InputCTMap)
+			throws Exception {
+		String instance_name = "servicedata";
+		Entity_ci_instance result = Generate_servicedata(collectBuildingSign, instance_name, pointList, InputCTMap);
+		return result;
+	}
+
+	public static Entity_ci_instance Generate_servicedata(String collectBuildingSign, String instance_name, List<WSEntity_point> pointList,
+			Map<String, Double> InputCTMap) throws Exception {
+		String object_sign = ConstantWeb.old_saas_parallel ? collectBuildingSign + "002" : collectBuildingSign;
+		Entity_ci_instance instance = new Entity_ci_instance();
+		instance.setObject_sign(object_sign);
+		instance.setInstance_name(instance_name);
+		instance.setFlag_valid(1L);
+		instance.setCompute_interval_seconds(ConstantWeb.name2interval.get(instance_name));
+
+		String building = collectBuildingSign;
+		List<Entity_ci_instanceinput> inputList = new ArrayList<Entity_ci_instanceinput>();
+		List<Entity_ci_instanceoutput> outputList = new ArrayList<Entity_ci_instanceoutput>();
+		for (WSEntity_point meter : pointList) {
+			if (!meter.getData_type().equals("Acc") && !meter.getData_type().equals("InAc")) {
+				continue;
+			}
+			String detail_meter = meter.getMeter();
+			long detail_funcid = meter.getFuncid();
+			{
+				Entity_ci_instanceinput input = new Entity_ci_instanceinput();
+				input.setObject_sign(object_sign);
+				input.setInstance_name(instance_name);
+				input.setInput_sign("meterdata_" + detail_meter + "_" + detail_funcid);
+				input.setTime_period(meter.getCollect_cycle());
+				input.setData_class("near");
+				input.setDao_type("fjd_near");
+				JSONObject dao_key = new JSONObject();
+				dao_key.put("building", building);
+				dao_key.put("meter", detail_meter);
+				dao_key.put("funcid", detail_funcid);
+				input.setDao_key(dao_key.toJSONString());
+				input.setSource_object_sign(building);
+				input.setSource_instance_name("fjd");
+				input.setSource_output_sign(detail_meter + "_" + detail_funcid);
+				inputList.add(input);
+			}
+			{
+				Entity_ci_instanceoutput output = new Entity_ci_instanceoutput();
+				output.setObject_sign(object_sign);
+				output.setInstance_name(instance_name);
+				output.setOutput_sign("servicedata_" + detail_meter + "_" + detail_funcid);
+				output.setTime_begin("19700101000000");
+				output.setTime_end("99990101000000");
+				output.setData_class("consumption");
+				output.setDao_type("servicedata");
+				JSONObject dao_key = new JSONObject();
+				dao_key.put("building", building);
+				dao_key.put("meter", detail_meter);
+				dao_key.put("funcid", detail_funcid);
+				output.setDao_key(dao_key.toJSONString());
+				output.setNeed_all_var_data(true);
+				output.setTime_period_intialized(true);
+				output.setTime_period(meter.getCollect_cycle());
+				output.setMode("expression");
+				String expression;
+				if (InputCTMap.containsKey(detail_meter + "_" + detail_funcid)) {
+					expression = "(meterdata_" + detail_meter + "_" + detail_funcid + "'+1-" + "meterdata_" + detail_meter + "_" + detail_funcid
+							+ ")*" + InputCTMap.get(detail_meter + "_" + detail_funcid);
+				} else {
+					expression = "meterdata_" + detail_meter + "_" + detail_funcid + "'+1-" + "meterdata_" + detail_meter + "_" + detail_funcid;
+				}
+				output.setExpression(expression);
+				outputList.add(output);
+			}
+		}
+
+		instance.setInputs(inputList.toArray(new Entity_ci_instanceinput[0]));
+		instance.setOutputs(outputList.toArray(new Entity_ci_instanceoutput[0]));
+
+		return instance;
+	}
+
+	public static Entity_ci_instance Generate_EMS(TSurvey survey, Map<String, Long> defaultMap, Map<String, Boolean> InputMap) throws Exception {
+		String time_period = "15min";
+
+		String source_object_sign = ConstantWeb.old_saas_parallel ? survey.getProjectSign() + "002" : survey.getProjectSign();
+		String object_sign = ConstantWeb.old_saas_parallel ? survey.getProjectSign() + "003" : survey.getProjectSign() + "-" + "001";
+		String instance_name = "EMS";
+		String building = survey.getProjectSign();
+
+		Map<String, TMeter> reportMeterMap = new HashMap<String, TMeter>();
+		for (TMeter meter : survey.getReportMeterArray()) {
+			reportMeterMap.put(meter.getSign(), meter);
+		}
+
+		List<Entity_ci_instanceinput> inputList = new ArrayList<Entity_ci_instanceinput>();
+		List<Entity_ci_instanceoutput> outputList = new ArrayList<Entity_ci_instanceoutput>();
+
+		Map<String, TBranch> branchMap = new HashMap<String, TBranch>();
+		TBranch[] branchArray = survey.getBranchArray();
+		for (TBranch branch : branchArray) {
+			branchMap.put(branch.getSign(), branch);
+		}
+		// 统计输入
+		for (String input_sign : InputMap.keySet()) {
+			int index_ = input_sign.lastIndexOf('_');
+			String meter = input_sign.substring(0, index_);
+			long funcid = Long.parseLong(input_sign.substring(index_ + 1));
+
+			TMeter exist = null;
+			for (TMeter pm : survey.getPointArray()) {
+				String ppp = pm.getSign() + "_" + pm.getFuncid();
+				if (ppp.equals(input_sign)) {
+					exist = pm;
+					break;
+				}
+			}
+			if (exist != null) {
+				Entity_ci_instanceinput input = new Entity_ci_instanceinput();
+				input.setObject_sign(object_sign);
+				input.setInstance_name(instance_name);
+				input.setInput_sign(exist.getDataType().equals("Acc") ? "servicedata_" + input_sign : "meterdata_" + input_sign);
+				input.setTime_period(exist.getTimeType());
+				input.setData_class(exist.getDataType().equals("Acc") ? "consumption" : "near");
+				input.setDao_type(exist.getDataType().equals("Acc") ? "servicedata" : "fjd_near");
+				JSONObject dao_key = new JSONObject();
+				dao_key.put("building", building);
+				dao_key.put("meter", meter);
+				dao_key.put("funcid", funcid);
+				input.setDao_key(dao_key.toJSONString());
+				input.setSource_object_sign(source_object_sign);
+				input.setSource_instance_name(exist.getDataType().equals("Acc") ? "servicedata" : "fjd");
+				input.setSource_output_sign(exist.getDataType().equals("Acc") ? "servicedata_" + input_sign : input_sign);
+				inputList.add(input);
+				continue;
+			}
+
+			Entity_ci_instanceinput input = new Entity_ci_instanceinput();
+			input.setObject_sign(object_sign);
+			input.setInstance_name(instance_name);
+			input.setInput_sign("servicedata_" + input_sign);
+			if (reportMeterMap.containsKey(meter)) {
+				TMeter TMeter = reportMeterMap.get(meter);
+				if (ConstantWeb.reportpoint_fixed_period_enable) {
+					input.setTime_period(ConstantWeb.reportpoint_fixed_period_value);
+				} else {
+					input.setTime_period(TMeter.getTimeType());
+				}
+			} else {
+				input.setTime_period(time_period);
+			}
+			input.setData_class("consumption");
+			input.setDao_type("servicedata");
+			JSONObject dao_key = new JSONObject();
+			dao_key.put("building", building);
+			dao_key.put("meter", meter);
+			dao_key.put("funcid", funcid);
+			input.setDao_key(dao_key.toJSONString());
+			input.setSource_object_sign(source_object_sign);
+			input.setSource_instance_name("servicedata");
+			input.setSource_output_sign("servicedata_" + input_sign);
+			inputList.add(input);
+		}
+		{
+			String virtualpoint_meter = "virtualpoint";
+			long virtualpoint_funcid = 99999L;
+			Entity_ci_instanceinput input = new Entity_ci_instanceinput();
+			input.setObject_sign(object_sign);
+			input.setInstance_name(instance_name);
+			input.setInput_sign("servicedata_" + virtualpoint_meter + "_" + virtualpoint_funcid);
+			{
+				input.setTime_period(time_period);
+			}
+			input.setData_class("consumption");
+			input.setDao_type("servicedata");
+			JSONObject dao_key = new JSONObject();
+			dao_key.put("building", building);
+			dao_key.put("meter", virtualpoint_meter);
+			dao_key.put("funcid", virtualpoint_funcid);
+			input.setDao_key(dao_key.toJSONString());
+			input.setSource_object_sign(source_object_sign);
+			input.setSource_instance_name("servicedata");
+			input.setSource_output_sign("servicedata_" + virtualpoint_meter + "_" + virtualpoint_funcid);
+			inputList.add(input);
+		}
+
+		// 根据时间段生成output
+		Map<String, Boolean> modelSignMap = new HashMap<String, Boolean>();
+		for (TConfigUse configUse : survey.getConfigUseArray()) {
+			Long defaultFunctionId = defaultMap.get(configUse.getEnergyType());
+			// 初始化分项节点
+			List<EnergyModel_tmp> emList = new ArrayList<EnergyModel_tmp>();
+			for (TEnergyModel energyModel : survey.getEnergyModelArray()) {
+				if (!energyModel.getEnergyType().equals(configUse.getEnergyType())) {
+					continue;
+				}
+				if (!modelSignMap.containsKey(energyModel.getSign())) {
+					modelSignMap.put(energyModel.getSign(), true);
+				}
+
+				EnergyModel_tmp em = new EnergyModel_tmp();
+				em.sign = energyModel.getSign();
+				em.name = energyModel.getName();
+				em.building = energyModel.getBuildingSign();
+				em.energyType = energyModel.getEnergyType();
+				Map<String, EnergyItem_tmp> eiMap = new HashMap<String, EnergyItem_tmp>();
+				for (TEnergyItem energyItem : energyModel.getEnergyItemArray()) {
+					EnergyItem_tmp ei = new EnergyItem_tmp();
+					ei.sign = energyItem.getSign();
+					ei.name = energyItem.getName();
+					ei.parentSign = energyItem.getParentSign();
+					if (energyItem.getFormula() != null) {
+						ei.isExpression = true;
+						ei.initialized = true;
+						ei.formula = energyItem.getFormula();
+					}
+					em.itemList.add(ei);
+					eiMap.put(ei.sign, ei);
+				}
+				for (EnergyItem_tmp ei : em.itemList) {
+					if (ei.parentSign != null) {
+						EnergyItem_tmp parent = eiMap.get(ei.parentSign);
+						parent.children.add(ei);
+						ei.parent = parent;
+					}
+				}
+				emList.add(em);
+			}
+
+			// 初始化支路计算单元节点,并链接到分项
+			Map<String, CalculateUnit_tmp> cuMap = new HashMap<String, CalculateUnit_tmp>();
+			for (TConfigUseItem configUseItem : configUse.getItemArray()) {
+				if (configUseItem.getFormula() == null && configUseItem.getMeterSign() == null) {
+					continue;
+				}
+
+				String formula;
+				if (configUseItem.getFormula() != null) {
+					formula = configUseItem.getFormula();
+				} else {
+					formula = "servicedata_" + configUseItem.getMeterSign() + "_" + defaultFunctionId;
+				}
+
+				// 处理计算单元
+				if (configUseItem.getCalculateUnitSign() != null) {
+					String cu_sign = configUseItem.getCalculateUnitSign();
+					if (!cuMap.containsKey(cu_sign)) {
+						CalculateUnit_tmp cuInner = new CalculateUnit_tmp();
+						cuInner.sign = cu_sign;
+						cuMap.put(cu_sign, cuInner);
+
+						TCalculateUnit cu_exist = null;
+						for (TCalculateUnit cu_tmp : survey.getCalculateUnitArray()) {
+							if (cu_tmp.getSign().equals(cu_sign)) {
+								cu_exist = cu_tmp;
+								break;
+							}
+						}
+						for (TCalculateUnit2EnergyItem cu2ei : cu_exist.getCalculateUnit2EnergyItemArray()) {
+							String energyModelSign = cu2ei.getEnergyModelSign();
+							String energyItemSign = cu2ei.getEnergyItemSign();
+							EnergyItem_tmp ei = getEnergyItem_tmp(emList, energyModelSign, energyItemSign);
+							if (!ei.initialized) {
+								ei.cuList.add("objectdata" + "_" + cu_sign);
+							}
+						}
+					}
+					CalculateUnit_tmp cu = cuMap.get(cu_sign);
+					cu.formulaList.add(formula);
+				}
+
+				// 处理支路
+				{
+					String cu_sign = configUseItem.getBranchSign();
+					if (!cuMap.containsKey(cu_sign)) {
+						CalculateUnit_tmp cuInner = new CalculateUnit_tmp();
+						cuInner.sign = cu_sign;
+						cuMap.put(cu_sign, cuInner);
+
+						if (configUseItem.getEnergyModelSign() != null && configUseItem.getEnergyItemSign() != null) {
+							String energyModelSign = configUseItem.getEnergyModelSign();
+							String energyItemSign = configUseItem.getEnergyItemSign();
+							EnergyItem_tmp ei = getEnergyItem_tmp(emList, energyModelSign, energyItemSign);
+							if (!ei.initialized) {
+								ei.cuList.add("objectdata" + "_" + cu_sign);
+							}
+						}
+					}
+					CalculateUnit_tmp cu = cuMap.get(cu_sign);
+					cu.formulaList.add(formula);
+				}
+			}
+
+			// children
+			Map<String, String> parentMap = new HashMap<String, String>();
+			for (TConfigUseItem configUseItem : configUse.getItemArray()) {
+				if (configUseItem.getMeterSign() != null) {
+					parentMap.put(configUseItem.getBranchSign(), configUseItem.getMeterSign());
+				}
+			}
+			Map<String, List<String>> childrenMap = new HashMap<String, List<String>>();
+			for (TConfigUseItem configUseItem : configUse.getItemArray()) {
+				if (configUseItem.getParentSign() != null && parentMap.containsKey(configUseItem.getParentSign())
+						&& configUseItem.getMeterSign() != null) {
+					String parentMeter = parentMap.get(configUseItem.getParentSign());
+					String childMeter = configUseItem.getMeterSign();
+					String serviceType = null;
+					if (branchMap.containsKey(configUseItem.getBranchSign())) {
+						serviceType = branchMap.get(configUseItem.getBranchSign()).getServiceType();
+					}
+					if (serviceType != null && ConstantWeb.zongzhi_ignore_serviceTypeMap.containsKey(serviceType)) {
+						continue;
+					}
+					if (!childrenMap.containsKey(parentMeter)) {
+						childrenMap.put(parentMeter, new ArrayList<String>());
+					}
+					childrenMap.get(parentMeter).add(childMeter);
+				}
+			}
+			{
+				Iterator<String> keyIter = childrenMap.keySet().iterator();
+				while (keyIter.hasNext()) {
+					String parentMeter = keyIter.next();
+					List<String> children = childrenMap.get(parentMeter);
+					StringBuffer sb = new StringBuffer();
+					for (String meter_child : children) {
+						String MeterSign = meter_child;
+						if (!InputMap.containsKey(MeterSign + "_" + defaultFunctionId)) {
+							InputMap.put(MeterSign + "_" + defaultFunctionId, true);
+						}
+						if (sb.length() > 0) {
+							sb.append("+");
+						}
+						sb.append("servicedata_" + MeterSign + "_" + defaultFunctionId);
+					}
+					String expression = sb.toString();
+					Entity_ci_instanceoutput output = new Entity_ci_instanceoutput();
+					output.setObject_sign(object_sign);
+					output.setInstance_name(instance_name);
+					output.setOutput_sign("servicedata_children_" + parentMeter);
+					output.setTime_begin(configUse.getStartDate());
+					output.setTime_end(configUse.getEndDate());
+					output.setData_class("consumption");
+					output.setDao_type("servicedata");
+					JSONObject dao_key = new JSONObject();
+					dao_key.put("building", building);
+					dao_key.put("meter", "children_" + parentMeter);
+					dao_key.put("funcid", defaultFunctionId);
+					output.setDao_key(dao_key.toJSONString());
+					output.setNeed_all_var_data(false);
+					output.setTime_period_intialized(true);
+					output.setTime_period(time_period);
+					output.setMode("expression");
+					output.setExpression(expression);
+					outputList.add(output);
+				}
+			}
+
+			// 分项汇总
+			while (true) {
+				boolean has_work = false;
+				for (EnergyModel_tmp em : emList) {
+					for (EnergyItem_tmp ei : em.itemList) {
+						if (ei.initialized) {
+							continue;
+						}
+						boolean children_ready = true;
+						for (EnergyItem_tmp ei_tmp : ei.children) {
+							if (!ei_tmp.initialized) {
+								children_ready = false;
+								break;
+							}
+						}
+						if (children_ready) {
+							StringBuffer sb = new StringBuffer();
+							for (EnergyItem_tmp ei_tmp : ei.children) {
+								if (ei_tmp.formula != null) {
+									if (sb.length() > 0) {
+										sb.append("+");
+									}
+									if (ei_tmp.isExpression) {
+										sb.append("energydata_" + em.building + "_" + em.sign + "_" + ei_tmp.sign);
+									} else {
+										sb.append("(" + ei_tmp.formula + ")");
+									}
+								}
+							}
+							for (String cu : ei.cuList) {
+								if (sb.length() > 0) {
+									sb.append("+");
+								}
+								sb.append(cu);
+							}
+							ei.initialized = true;
+							if (sb.length() > 0) {
+								ei.formula = sb.toString();
+							}
+							has_work = true;
+						}
+					}
+				}
+				if (!has_work) {
+					break;
+				}
+			}
+
+			// 构造输出
+			for (EnergyModel_tmp em : emList) {
+				for (EnergyItem_tmp ei : em.itemList) {
+					if (!ei.initialized) {
+						throw new Exception("energyItem not initialized:" + ei.sign);
+					}
+					if (ei.formula == null) {
+						ei.formula = "servicedata_virtualpoint_99999" + "-" + "servicedata_virtualpoint_99999";
+					}
+
+					Entity_ci_instanceoutput output = new Entity_ci_instanceoutput();
+					output.setObject_sign(object_sign);
+					output.setInstance_name(instance_name);
+					output.setOutput_sign("energydata_" + em.building + "_" + em.sign + "_" + ei.sign);
+					output.setTime_begin(configUse.getStartDate());
+					output.setTime_end(configUse.getEndDate());
+					output.setData_class("consumption");
+					output.setDao_type("energydata");
+					JSONObject dao_key = new JSONObject();
+					dao_key.put("building", em.building);
+					dao_key.put("energyModelSign", em.sign);
+					dao_key.put("energyModelNodeSign", ei.sign);
+					output.setDao_key(dao_key.toJSONString());
+					output.setNeed_all_var_data(false);
+					output.setTime_period_intialized(false);
+					output.setTime_period(time_period);
+					output.setMode("expression");
+					output.setExpression(ei.formula);
+					outputList.add(output);
+				}
+			}
+			for (CalculateUnit_tmp cu : cuMap.values()) {
+				Entity_ci_instanceoutput output = new Entity_ci_instanceoutput();
+				output.setObject_sign(object_sign);
+				output.setInstance_name(instance_name);
+				output.setOutput_sign("objectdata_" + cu.sign);
+				output.setTime_begin(configUse.getStartDate());
+				output.setTime_end(configUse.getEndDate());
+				output.setData_class("consumption");
+				output.setDao_type("objectdata");
+				JSONObject dao_key = new JSONObject();
+				dao_key.put("building", building);
+				dao_key.put("objectSign", cu.sign);
+				output.setDao_key(dao_key.toJSONString());
+				output.setNeed_all_var_data(false);
+				output.setTime_period_intialized(false);
+				output.setTime_period(time_period);
+				output.setMode("expression");
+				if (cu.formulaList.size() == 0) {
+					throw new Exception("CalculateUnit no formula:" + cu.sign);
+				}
+				StringBuffer sb = new StringBuffer();
+				for (String formula : cu.formulaList) {
+					if (sb.length() > 0) {
+						sb.append("+");
+					}
+					sb.append("(" + formula + ")");
+				}
+				output.setExpression(sb.toString());
+				outputList.add(output);
+			}
+		}
+
+		// 没有调研的分项模型
+		for (TEnergyModel energyModel : survey.getEnergyModelArray()) {
+			if (modelSignMap.containsKey(energyModel.getSign())) {
+				continue;
+			}
+
+			EnergyModel_tmp em = new EnergyModel_tmp();
+			em.sign = energyModel.getSign();
+			em.name = energyModel.getName();
+			em.building = energyModel.getBuildingSign();
+			em.energyType = energyModel.getEnergyType();
+			Map<String, EnergyItem_tmp> eiMap = new HashMap<String, EnergyItem_tmp>();
+			for (TEnergyItem energyItem : energyModel.getEnergyItemArray()) {
+				EnergyItem_tmp ei = new EnergyItem_tmp();
+				ei.sign = energyItem.getSign();
+				ei.name = energyItem.getName();
+				ei.parentSign = energyItem.getParentSign();
+				if (energyItem.getFormula() != null) {
+					ei.isExpression = true;
+					ei.initialized = true;
+					ei.formula = energyItem.getFormula();
+				}
+				em.itemList.add(ei);
+				eiMap.put(ei.sign, ei);
+			}
+			for (EnergyItem_tmp ei : em.itemList) {
+				if (ei.parentSign != null) {
+					EnergyItem_tmp parent = eiMap.get(ei.parentSign);
+					parent.children.add(ei);
+					ei.parent = parent;
+				}
+			}
+
+			for (EnergyItem_tmp ei : em.itemList) {
+				if (!ei.initialized) {
+					ei.formula = "servicedata_virtualpoint_99999" + "-" + "servicedata_virtualpoint_99999";
+				}
+				Entity_ci_instanceoutput output = new Entity_ci_instanceoutput();
+				output.setObject_sign(object_sign);
+				output.setInstance_name(instance_name);
+				output.setOutput_sign("energydata_" + em.building + "_" + em.sign + "_" + ei.sign);
+				output.setTime_begin("19700101000000");
+				output.setTime_end("99990101000000");
+				output.setData_class("consumption");
+				output.setDao_type("energydata");
+				JSONObject dao_key = new JSONObject();
+				dao_key.put("building", em.building);
+				dao_key.put("energyModelSign", em.sign);
+				dao_key.put("energyModelNodeSign", ei.sign);
+				output.setDao_key(dao_key.toJSONString());
+				output.setNeed_all_var_data(false);
+				output.setTime_period_intialized(false);
+				output.setTime_period(time_period);
+				output.setMode("expression");
+				output.setExpression(ei.formula);
+				outputList.add(output);
+			}
+		}
+
+		Entity_ci_instance instance = new Entity_ci_instance();
+		instance.setObject_sign(object_sign);
+		instance.setInstance_name(instance_name);
+		instance.setFlag_valid(1L);
+		instance.setCompute_interval_seconds(1L);
+		instance.setInputs(inputList.toArray(new Entity_ci_instanceinput[0]));
+		instance.setOutputs(outputList.toArray(new Entity_ci_instanceoutput[0]));
+
+		return instance;
+	}
+
+	private static EnergyItem_tmp getEnergyItem_tmp(List<EnergyModel_tmp> emList, String energyModelSign, String energyItemSign) {
+		EnergyModel_tmp em_exist = null;
+		for (EnergyModel_tmp em : emList) {
+			if (em.sign.equals(energyModelSign)) {
+				em_exist = em;
+				break;
+			}
+		}
+		EnergyItem_tmp ei_exist = null;
+		for (EnergyItem_tmp ei : em_exist.itemList) {
+			if (ei.sign.equals(energyItemSign)) {
+				ei_exist = ei;
+			}
+		}
+		return ei_exist;
+	}
+
+	// 扫描公式,整理公式
+	public static void refresh(TSurvey survey, Map<String, Long> defaultMap, Map<String, Boolean> InputMap, Map<String, Double> InputCTMap)
+			throws Exception {
+		for (TEnergyModel energyModel : survey.getEnergyModelArray()) {
+			Long defaultFunctionId = defaultMap.get(energyModel.getEnergyType());
+			for (TEnergyItem energyItem : energyModel.getEnergyItemArray()) {
+				if (energyItem.getFormula() != null) {
+					String new_formula = formula_pre(energyItem.getFormula(), defaultFunctionId, InputMap);
+					energyItem.setFormula(new_formula);
+				}
+			}
+		}
+		for (TConfigUse configUse : survey.getConfigUseArray()) {
+			Long defaultFunctionId = defaultMap.get(configUse.getEnergyType());
+			for (TConfigUseItem configUseItem : configUse.getItemArray()) {
+				if (configUseItem.getFormula() != null) {
+					String new_formula = formula_pre(configUseItem.getFormula(), defaultFunctionId, InputMap);
+					configUseItem.setFormula(new_formula);
+				} else {
+					String MeterSign = configUseItem.getMeterSign();
+					long FunctionTypeId = defaultFunctionId;
+					InputMap.put(MeterSign + "_" + FunctionTypeId, true);
+					if (configUseItem.getMeterCT() != null && configUseItem.getMeterCT() != 1.0) {
+						if (InputCTMap.containsKey(MeterSign + "_" + FunctionTypeId)) {
+							double exist_value = InputCTMap.get(MeterSign + "_" + FunctionTypeId).doubleValue();
+							double value_new = configUseItem.getMeterCT().doubleValue();
+							if (exist_value != value_new) {
+								throw new Exception("CT has multi value:" + MeterSign + "_" + FunctionTypeId + "\t" + exist_value + "\t" + value_new);
+							}
+						}
+						InputCTMap.put(MeterSign + "_" + FunctionTypeId, configUseItem.getMeterCT());
+					}
+				}
+			}
+		}
+	}
+
+	// 公式预处理,加上默认功能号,[1001.1]改成servicedata_1001_0
+	private static String formula_pre(String formula, Long defaultFunctionId, Map<String, Boolean> InputMap) throws Exception {
+		try {
+			CommonTreeNodeStream nodes = GenerateParser_ComputeEngine(formula);
+			ComputeEngineScanner scanner = new ComputeEngineScanner(nodes);
+			scanner.prog();
+			String[] vars = scanner.varDict.keySet().toArray(new String[0]);
+			for (int index_var = 0; index_var < vars.length; index_var++) {
+				String var = vars[index_var];
+				if (var.startsWith("meterdata_")) {
+					InputMap.put(var.substring("meterdata_".length()), true);
+				} else if (var.startsWith("servicedata_")) {
+					InputMap.put(var.substring("servicedata_".length()), true);
+				}
+			}
+			return formula;
+		} catch (Exception e) {
+			// log.error(e.getMessage(),e);
+			String result = formula_EMS(formula, defaultFunctionId, InputMap);
+			return result;
+		}
+	}
+
+	private static String formula_EMS(String formula, Long defaultFunctionId, Map<String, Boolean> InputMap) throws Exception {
+		CommonTreeNodeStream nodes = GenerateParser_EMS(formula);
+		EMSScanner scanner = new EMSScanner(nodes);
+		scanner.prog();
+		String[] vars = scanner.GetVarDict().keySet().toArray(new String[0]);
+		Map<String, String> old2newMap = new HashMap<String, String>();
+		String new_expression = formula;
+		for (int index_var = 0; index_var < vars.length; index_var++) {
+			String var = vars[index_var];
+			String MeterSign;
+			long FunctionTypeId;
+			String varPart = var;
+			int index_dot = varPart.indexOf('.');
+			if (index_dot == -1) {
+				MeterSign = varPart;
+				FunctionTypeId = defaultFunctionId.longValue();
+			} else {
+				MeterSign = varPart.substring(0, index_dot);
+				FunctionTypeId = Integer.parseInt(varPart.substring(index_dot + 1));
+			}
+			if (ConstantWeb.funcid_10101_to_0) {
+				if (FunctionTypeId == 10101) {
+					FunctionTypeId = 0;
+				}
+			}
+			if (!InputMap.containsKey(MeterSign + "_" + FunctionTypeId)) {
+				InputMap.put(MeterSign + "_" + FunctionTypeId, true);
+			}
+			old2newMap.put(var, "servicedata_" + MeterSign + "_" + FunctionTypeId);
+		}
+		for (int index_var = 0; index_var < vars.length; index_var++) {
+			String var = vars[index_var];
+			int index_dot = var.indexOf('.');
+			if (index_dot == -1) {
+				new_expression = new_expression.replaceAll("\\[" + var + "\\]", old2newMap.get(var));
+			} else {
+				new_expression = new_expression.replaceAll("\\[" + var.substring(0, index_dot) + "\\." + var.substring(index_dot + 1) + "\\]",
+						old2newMap.get(var));
+			}
+		}
+		return new_expression;
+	}
+
+	private static CommonTreeNodeStream GenerateParser_EMS(String expression) throws Exception {
+		ANTLRInputStream input = new ANTLRInputStream(new ByteArrayInputStream((expression + "$").getBytes()));
+		EMSLexer lexer = new EMSLexer(input);
+		CommonTokenStream tokens = new CommonTokenStream(lexer);
+		EMSParser parser = new EMSParser(tokens);
+		EMSParser.prog_return r = parser.prog();
+
+		CommonTree t = (CommonTree) r.getTree();
+		CommonTreeNodeStream nodes = new CommonTreeNodeStream(t);
+		nodes.setTokenStream(tokens);
+
+		return nodes;
+	}
+
+	private static CommonTreeNodeStream GenerateParser_ComputeEngine(String expression) throws Exception {
+		ANTLRInputStream input = new ANTLRInputStream(new ByteArrayInputStream((expression + "$").getBytes()));
+		ComputeEngineLexer lexer = new ComputeEngineLexer(input);
+		CommonTokenStream tokens = new CommonTokenStream(lexer);
+		ComputeEngineParser parser = new ComputeEngineParser(tokens);
+		ComputeEngineParser.prog_return r = parser.prog();
+
+		CommonTree t = (CommonTree) r.getTree();
+		CommonTreeNodeStream nodes = new CommonTreeNodeStream(t);
+		nodes.setTokenStream(tokens);
+
+		return nodes;
+	}
+}

+ 58 - 0
src/main/java/com/persagy/util/ConstantAgent.java

@@ -0,0 +1,58 @@
+package com.persagy.util;
+
+import com.sagacloud.repository.HBaseSaveManagerRepository;
+import com.zillion.database.agent.IZillionAgent;
+import com.zillion.database.agent.ZillionAgent;
+import lombok.extern.slf4j.Slf4j;
+import org.dom4j.Document;
+import org.dom4j.Element;
+import org.dom4j.io.SAXReader;
+
+import java.io.InputStream;
+import java.util.Iterator;
+
+import static com.sagacloud.util.compute_engine.util.ConstantCE.getStream;
+@Slf4j
+@SuppressWarnings("rawtypes")
+public class ConstantAgent {
+
+    public static String database_name;
+    public static String Server_name;
+
+    public static boolean objectdata_Service = false;
+
+    public static ZillionAgent GetAgent() {
+        return HBaseSaveManagerRepository.randomZillionAgent();
+    }
+
+    public static IZillionAgent GetIZillionAgent() {
+        return HBaseSaveManagerRepository.randomZillionAgent();
+    }
+
+    static {
+        try {
+            try (InputStream stream = getStream("config.xml")) {
+                SAXReader saxReader = new SAXReader();
+                Document document = saxReader.read(stream);
+                if (document != null) {
+                    Iterator iter;
+                    Element element;
+
+                    iter = document.selectNodes("/root/database_name").iterator();
+                    if (iter.hasNext()) {
+                        element = (Element) iter.next();
+                        database_name = element.getText();
+                    }
+
+                    iter = document.selectNodes("/root/AddressServer").iterator();
+                    if (iter.hasNext()) {
+                        element = (Element) iter.next();
+                        Server_name = element.attribute("name").getValue();
+                    }
+                }
+            }
+        } catch (Exception e) {
+            log.error(e.getMessage(),e);
+        }
+    }
+}

+ 187 - 0
src/main/java/com/persagy/util/ConstantWeb.java

@@ -0,0 +1,187 @@
+package com.persagy.util;
+
+import cn.hutool.core.io.resource.ResourceUtil;
+import cn.hutool.core.util.StrUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.dom4j.Attribute;
+import org.dom4j.Document;
+import org.dom4j.Element;
+import org.dom4j.io.SAXReader;
+import org.zillion.util.log.LogUtil;
+
+import java.io.File;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+@Slf4j
+@SuppressWarnings("rawtypes")
+public class ConstantWeb {
+    public static String Server_name;
+    public static boolean funcid_10101_to_0 = false;
+    public static boolean EMS_use_collectsign = false;
+    public static boolean old_saas_parallel = false;
+    public static boolean recompute_metercomputetime = false;
+    public static boolean reportpoint_fixed_period_enable = false;
+    public static String reportpoint_fixed_period_value;
+
+    public static boolean fjd_3 = false;
+
+    public static Map<String, Long> name2interval = new HashMap<String, Long>();
+    public static Map<String, String> name2status_request = new HashMap<String, String>();
+
+    public static Map<String, String> BuildingUploadMap = new HashMap<String, String>();
+    public static Map<String, Boolean> BuildingIncludesMap = new HashMap<String, Boolean>();
+    public static Map<String, Boolean> BuildingExcludesMap = new HashMap<String, Boolean>();
+
+    public static Map<String, Boolean> zongzhi_ignore_serviceTypeMap = new HashMap<String, Boolean>();
+
+    static {
+        try {
+            try (InputStream stream = getStream("config.xml")) {
+                SAXReader saxReader = new SAXReader();
+                Document document = saxReader.read(stream);
+                if (document != null) {
+                    Iterator iter;
+                    Element element;
+
+                    iter = document.selectNodes("/root/Server").iterator();
+                    if (iter.hasNext()) {
+                        element = (Element) iter.next();
+                        Server_name = element.attribute("name").getValue();
+                    }
+
+                    iter = document.selectNodes("/root/funcid_10101_to_0").iterator();
+                    if (iter.hasNext()) {
+                        element = (Element) iter.next();
+                        funcid_10101_to_0 = element.getText().equalsIgnoreCase("true") ? true : false;
+                    }
+
+                    iter = document.selectNodes("/root/EMS_use_collectsign").iterator();
+                    if (iter.hasNext()) {
+                        element = (Element) iter.next();
+                        EMS_use_collectsign = element.getText().equalsIgnoreCase("true") ? true : false;
+                    }
+
+                    iter = document.selectNodes("/root/old_saas_parallel").iterator();
+                    if (iter.hasNext()) {
+                        element = (Element) iter.next();
+                        old_saas_parallel = element.getText().equalsIgnoreCase("true") ? true : false;
+                    }
+
+                    iter = document.selectNodes("/root/recompute_metercomputetime").iterator();
+                    if (iter.hasNext()) {
+                        element = (Element) iter.next();
+                        recompute_metercomputetime = element.getText().equalsIgnoreCase("true") ? true : false;
+                    }
+
+                    iter = document.selectNodes("/root/reportpoint_fixed_period").iterator();
+                    if (iter.hasNext()) {
+                        element = (Element) iter.next();
+                        reportpoint_fixed_period_enable = element.attribute("enable").getValue().equalsIgnoreCase("true") ? true : false;
+                        reportpoint_fixed_period_value = element.attribute("value").getValue();
+                    }
+
+                    iter = document.selectNodes("/root/fjd_3").iterator();
+                    if (iter.hasNext()) {
+                        element = (Element) iter.next();
+                        fjd_3 = element.getText().equalsIgnoreCase("true") ? true : false;
+                    }
+
+                    iter = document.selectNodes("/root/compute").iterator();
+                    while (iter.hasNext()) {
+                        element = (Element) iter.next();
+                        String name = element.attribute("name").getValue();
+                        long interval = Long.parseLong(element.attribute("interval").getValue());
+                        String status_request = element.attribute("status_request").getValue();
+                        name2interval.put(name, interval);
+                        name2status_request.put(name, status_request);
+                    }
+
+                    iter = document.selectNodes("/root/BuildingIncludes/Building").iterator();
+                    while (iter.hasNext()) {
+                        element = (Element) iter.next();
+                        String sign = element.attribute("sign").getValue();
+                        Attribute sign_new = element.attribute("sign_new");
+                        if (sign_new != null) {
+                            BuildingUploadMap.put(sign, sign_new.getValue());
+                            BuildingIncludesMap.put(sign_new.getValue(), true);
+                        } else {
+                            BuildingUploadMap.put(sign, sign);
+                            BuildingIncludesMap.put(sign, true);
+                        }
+                    }
+
+                    iter = document.selectNodes("/root/BuildingExcludes/Building").iterator();
+                    while (iter.hasNext()) {
+                        element = (Element) iter.next();
+                        BuildingExcludesMap.put(element.getText(), true);
+                    }
+
+                    iter = document.selectNodes("/root/zongzhi_ignore_serviceType").iterator();
+                    while (iter.hasNext()) {
+                        element = (Element) iter.next();
+                        zongzhi_ignore_serviceTypeMap.put(element.getText(), true);
+                    }
+
+                }
+            }
+        } catch (Exception e) {
+            log.error(e.getMessage(),e);
+        }
+    }
+
+    public static InputStream getStream(String resourc) {
+        if (resourc.startsWith(File.separator)) {
+            resourc = StrUtil.removePrefix(resourc, File.separator);
+        }
+        try {
+            String filePath = File.separator + "usr" + File.separator + "local" + File.separator + "etc" + File.separator + resourc;
+            InputStream stream = ResourceUtil.getStream(filePath);
+            if (stream != null) {
+                LogUtil.warn("getStream success 0" + "\t" + filePath);
+                return stream;
+            }
+        } catch (Exception e) {
+        }
+        try {
+            // jar包同级config目录
+            String filePath = System.getProperty("user.dir") + File.separator + "config" + File.separator + resourc;
+            InputStream stream = ResourceUtil.getStream(filePath);
+            if (stream != null) {
+                LogUtil.warn("getStream success 1" + "\t" + filePath);
+                return stream;
+            }
+        } catch (Exception e) {
+        }
+        try {
+            // jar包同级目录
+            String filePath = System.getProperty("user.dir") + File.separator + resourc;
+            InputStream stream = ResourceUtil.getStream(filePath);
+            if (stream != null) {
+                LogUtil.warn("getStream success 2" + "\t" + filePath);
+                return stream;
+            }
+        } catch (Exception e) {
+        }
+        try {
+            // ClassPath目录
+            InputStream in = new org.springframework.core.io.ClassPathResource(File.separator + resourc).getInputStream();
+            if (in != null) {
+                LogUtil.warn("getStream success 3" + "\t" + "ClassPathResource" + "\t" + resourc);
+                return in;
+            }
+        } catch (Exception e) {
+        }
+        try {
+            InputStream stream = ConstantWeb.class.getResourceAsStream(File.separator + resourc);
+            if (stream != null) {
+                LogUtil.warn("getStream success 4" + "\t" + "getResourceAsStream" + "\t" + resourc);
+                return stream;
+            }
+        } catch (Exception e) {
+        }
+        LogUtil.warn("getStream fail " + resourc);
+        return null;
+    }
+}

+ 92 - 0
src/main/java/com/persagy/util/DynamicDataUtil.java

@@ -0,0 +1,92 @@
+package com.persagy.util;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.persagy.entity.EntityDynamicData;
+import com.persagy.entity.EntityDynamicDataArray;
+import com.sagacloud.util.compute_engine.util.DoubleTimeObject;
+
+public class DynamicDataUtil {
+	public static EntityDynamicData Convert_original(JSONObject json) {
+		if (json == null) {
+			return null;
+		}
+
+		EntityDynamicData result = new EntityDynamicData();
+		result.setTime(json.getString("receivetime"));
+		result.setValue(json.getDouble("data"));
+		return result;
+	}
+
+	public static EntityDynamicData Convert(JSONObject json) {
+		if (json == null) {
+			return null;
+		}
+
+		EntityDynamicData result = new EntityDynamicData();
+		result.setTime(json.getString("data_time"));
+		result.setValue(json.getDouble("data_value"));
+		return result;
+	}
+
+	public static EntityDynamicDataArray ConvertArray_original(JSONArray Content) {
+		if (Content == null) {
+			return null;
+		}
+
+		EntityDynamicDataArray result = new EntityDynamicDataArray();
+		List<EntityDynamicData> dataList = new ArrayList<EntityDynamicData>();
+		for (int i = 0; i < Content.size(); i++) {
+			EntityDynamicData data = Convert_original(Content.getJSONObject(i));
+			dataList.add(data);
+		}
+		result.setDataArray(dataList.toArray(new EntityDynamicData[0]));
+		return result;
+	}
+
+	public static EntityDynamicDataArray ConvertArray(JSONArray Content) {
+		if (Content == null) {
+			return null;
+		}
+
+		EntityDynamicDataArray result = new EntityDynamicDataArray();
+		List<EntityDynamicData> dataList = new ArrayList<EntityDynamicData>();
+		for (int i = 0; i < Content.size(); i++) {
+			EntityDynamicData data = Convert(Content.getJSONObject(i));
+			dataList.add(data);
+		}
+		result.setDataArray(dataList.toArray(new EntityDynamicData[0]));
+		return result;
+	}
+
+	public static EntityDynamicData Convert(DoubleTimeObject dto) {
+		if (dto == null) {
+			return null;
+		}
+
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
+		EntityDynamicData result = new EntityDynamicData();
+		result.setTime(sdf.format(dto.data_time));
+		result.setValue(dto.data_value);
+		return result;
+	}
+
+	public static EntityDynamicDataArray ConvertArray(List<DoubleTimeObject> dtoList) {
+		if (dtoList == null) {
+			return null;
+		}
+
+		EntityDynamicDataArray result = new EntityDynamicDataArray();
+		List<EntityDynamicData> dataList = new ArrayList<EntityDynamicData>();
+		for (int i = 0; i < dtoList.size(); i++) {
+			EntityDynamicData data = Convert(dtoList.get(i));
+			dataList.add(data);
+		}
+		result.setDataArray(dataList.toArray(new EntityDynamicData[0]));
+		return result;
+	}
+}

+ 409 - 0
src/main/java/com/persagy/util/QueryUtil.java

@@ -0,0 +1,409 @@
+package com.persagy.util;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.persagy.entity.WSBuildingData;
+import com.persagy.entity.WSData;
+import com.persagy.entity.WSFlag;
+import com.sagacloud.repository.HBaseSaveManagerRepository;
+import com.sagacloud.util.compute_engine.util.ConstantCE;
+import lombok.extern.slf4j.Slf4j;
+
+import java.text.SimpleDateFormat;
+import java.util.*;
+@Slf4j
+public class QueryUtil {
+	public static boolean DateMatch(String time_period, Date data_time) {
+		boolean result = false;
+
+		long data_time_long = data_time.getTime();
+		if (time_period.equals("5min")) {
+			if (data_time_long % (1000L * 60 * 5) == 0) {
+				result = true;
+			}
+		} else if (time_period.equals("10min")) {
+			if (data_time_long % (1000L * 60 * 10) == 0) {
+				result = true;
+			}
+		} else if (time_period.equals("15min")) {
+			if (data_time_long % (1000L * 60 * 15) == 0) {
+				result = true;
+			}
+		} else if (time_period.equals("1h")) {
+			if (data_time_long % (1000L * 60 * 60) == 0) {
+				result = true;
+			}
+		} else if (time_period.equals("1d")) {
+			if ((data_time_long + 1000L * 60 * 60 * 8) % (1000L * 60 * 60 * 24) == 0) {
+				result = true;
+			}
+		}
+
+		return result;
+	}
+
+	public static List<String> getBigger(String collect_cycle) throws Exception {
+		List<String> bigger_collect_cycle = new ArrayList<String>();
+		if (collect_cycle.equals("1min")) {
+			bigger_collect_cycle.add("5min");
+			bigger_collect_cycle.add("15min");
+			bigger_collect_cycle.add("1h");
+			bigger_collect_cycle.add("1d");
+		} else if (collect_cycle.equals("5min")) {
+			bigger_collect_cycle.add("15min");
+			bigger_collect_cycle.add("1h");
+			bigger_collect_cycle.add("1d");
+		} else if (collect_cycle.equals("10min")) {
+			bigger_collect_cycle.add("1h");
+			bigger_collect_cycle.add("1d");
+		} else if (collect_cycle.equals("15min")) {
+			bigger_collect_cycle.add("1h");
+			bigger_collect_cycle.add("1d");
+		} else if (collect_cycle.equals("1h")) {
+			bigger_collect_cycle.add("1d");
+		} else {
+			throw new Exception("collect_cycle error:" + collect_cycle);
+		}
+		return bigger_collect_cycle;
+	}
+
+	public static List<WSData> GetDataService(String building, String meter, Long funcid, String time_period, String data_time_from,
+			String data_time_to) throws Exception {
+		List<WSData> result = new ArrayList<WSData>();
+		JSONObject Criteria = new JSONObject();
+		Criteria.put("building", building);
+		Criteria.put("meter", meter);
+		Criteria.put("funcid", funcid);
+		JSONObject range = new JSONObject();
+		range.put("$gte", data_time_from);
+		range.put("$lte", data_time_to);
+		Criteria.put("data_time", range);
+		JSONObject wrapperObject = new JSONObject();
+		wrapperObject.put("QueryType", "select");
+		wrapperObject.put("Database", ConstantCE.database_name);
+		wrapperObject.put("Datatable", "data_servicedata" + "_" + time_period);
+		wrapperObject.put("Criteria", Criteria);
+		JSONObject queryResult = HBaseSaveManagerRepository.randomZillionAgent().Query(wrapperObject);
+		JSONArray resultContent = (JSONArray) queryResult.get("Content");
+		for (int i = 0; i < resultContent.size(); i++) {
+			JSONObject dataItem = (JSONObject) resultContent.get(i);
+			WSData data = new WSData();
+			data.setData_time((String) dataItem.get("data_time"));
+			data.setData_value((Double) (dataItem.get("data_value")));
+			result.add(data);
+		}
+		return result;
+	}
+
+	public static List<WSData> GetDataEnergy(String building, String energyModelSign, String energyModelNodeSign, String time_period,
+			String data_time_from, String data_time_to) throws Exception {
+		List<WSData> result = new ArrayList<WSData>();
+		JSONObject Criteria = new JSONObject();
+		Criteria.put("building", building);
+		Criteria.put("energyModelSign", energyModelSign);
+		Criteria.put("energyModelNodeSign", energyModelNodeSign);
+		JSONObject range = new JSONObject();
+		range.put("$gte", data_time_from);
+		range.put("$lte", data_time_to);
+		Criteria.put("data_time", range);
+		JSONObject wrapperObject = new JSONObject();
+		wrapperObject.put("QueryType", "select");
+		wrapperObject.put("Database", ConstantCE.database_name);
+		wrapperObject.put("Datatable", "data_energydata" + "_" + time_period);
+		wrapperObject.put("Criteria", Criteria);
+		JSONObject queryResult = HBaseSaveManagerRepository.randomZillionAgent().Query(wrapperObject);
+		JSONArray resultContent = (JSONArray) queryResult.get("Content");
+		for (int i = 0; i < resultContent.size(); i++) {
+			JSONObject dataItem = (JSONObject) resultContent.get(i);
+			WSData data = new WSData();
+			data.setData_time((String) dataItem.get("data_time"));
+			data.setData_value((Double) (dataItem.get("data_value")));
+			result.add(data);
+		}
+		return result;
+	}
+
+	public static List<WSData> GetDataNear(String building, String meter, long funcid, String time_period, String data_time_from, String data_time_to)
+			throws Exception {
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
+		List<WSData> result = new ArrayList<WSData>();
+
+		Map<String, Boolean> tableMap = new HashMap<String, Boolean>();
+		{
+			JSONObject wrapperObject = new JSONObject();
+			wrapperObject.put("QueryType", "table_list_strict");
+			wrapperObject.put("Database", ConstantCE.database_name);
+			JSONObject queryResult = HBaseSaveManagerRepository.randomZillionAgent().Query(wrapperObject);
+			JSONArray table_list = (JSONArray) queryResult.get("Content");
+			for (int i = 0; i < table_list.size(); i++) {
+				String table = (String) table_list.get(i);
+				tableMap.put(table, true);
+			}
+		}
+
+		JSONObject Criteria = new JSONObject();
+		Criteria.put("building", building);
+		Criteria.put("meter", meter);
+		Criteria.put("funcid", funcid);
+		JSONObject range = new JSONObject();
+		range.put("$gte", data_time_from);
+		range.put("$lte", data_time_to);
+		Criteria.put("data_time", range);
+
+		int fjd_count = 4;
+		JSONArray[] resultContentArray = new JSONArray[fjd_count];
+		int[] indexTmp = new int[4];
+		for (int i = 0; i < fjd_count; i++) {
+			String table = "fjd_" + i + "_near" + "_" + time_period;
+			if (tableMap.containsKey(table)) {
+				JSONObject wrapperObject = new JSONObject();
+				wrapperObject.put("QueryType", "select");
+				wrapperObject.put("Database", ConstantCE.database_name);
+				wrapperObject.put("Datatable", table);
+				wrapperObject.put("Criteria", Criteria);
+				JSONObject queryResult = HBaseSaveManagerRepository.randomZillionAgent().Query(wrapperObject);
+				resultContentArray[i] = (JSONArray) queryResult.get("Content");
+			} else {
+				resultContentArray[i] = new JSONArray();
+			}
+			indexTmp[i] = 0;
+		}
+
+		Date time_from = sdf.parse(data_time_from);
+		Date time_to = sdf.parse(data_time_to);
+		Date timeTmp = time_from;
+		long interval = get_interval(time_period);
+		while (timeTmp.getTime() <= time_to.getTime()) {
+			WSData[] entityArray = new WSData[4];
+			for (int i = 0; i < fjd_count; i++) {
+				JSONArray resultContent = resultContentArray[i];
+				for (int ii = indexTmp[i]; ii < resultContent.size(); ii++) {
+					indexTmp[i] = ii;
+					JSONObject dataItem = (JSONObject) resultContent.get(ii);
+					Date data_time = sdf.parse((String) dataItem.get("data_time"));
+					if (data_time.getTime() < timeTmp.getTime()) {
+					} else if (data_time.getTime() == timeTmp.getTime()) {
+						WSData entity = new WSData();
+						entity.setData_from("" + i);
+						entity.setData_time((String) dataItem.get("data_time"));
+						entity.setLabel_flag(dataItem.get("data_flag").toString());
+						entity.setData_value(dataItem.get("data_value") == null ? null : (Double) dataItem.get("data_value"));
+						entityArray[i] = entity;
+					} else {
+						break;
+					}
+				}
+			}
+
+			WSData entity = null;
+			for (int i = fjd_count - 1; i >= 0; i--) {
+				if (entityArray[i] != null) {
+					entity = entityArray[i];
+					break;
+				}
+			}
+			if (entity != null) {
+				result.add(entity);
+			}
+
+			timeTmp = new Date(timeTmp.getTime() + interval);
+		}
+
+		return result;
+	}
+
+	public static long get_interval(String time_period) {
+		long result = 0L;
+		if (time_period.equals("1min")) {
+			result = 1000L * 60;
+		} else if (time_period.equals("5min")) {
+			result = 1000L * 60 * 5;
+		} else if (time_period.equals("10min")) {
+			result = 1000L * 60 * 10;
+		} else if (time_period.equals("15min")) {
+			result = 1000L * 60 * 15;
+		} else if (time_period.equals("1h")) {
+			result = 1000L * 60 * 60;
+		} else if (time_period.equals("1d")) {
+			result = 1000L * 60 * 60 * 24;
+		}
+		return result;
+	}
+
+	public static String GetMeterFirstTime(String building, String meter, long funcid) throws Exception {
+
+		JSONObject Criteria = new JSONObject();
+		Criteria.put("building", building);
+		Criteria.put("meter", meter);
+		Criteria.put("funcid", funcid);
+
+		JSONObject wrapperObject = new JSONObject();
+		wrapperObject.put("QueryType", "select");
+		wrapperObject.put("Database", ConstantCE.database_name);
+		wrapperObject.put("Datatable", "fjd_0_metercomputetime");
+		wrapperObject.put("Criteria", Criteria);
+		JSONObject queryResult = HBaseSaveManagerRepository.randomZillionAgent().Query(wrapperObject);
+		JSONArray resultContent = (JSONArray) queryResult.get("Content");
+		if (resultContent.size() > 0) {
+			JSONObject dataItem = (JSONObject) resultContent.get(0);
+			return (String) dataItem.get("first_compute_time");
+		}
+
+		return null;
+	}
+
+	public static List<WSData> GetDataNear(int fjd_i, String building, String meter, long funcid, String time_period, String data_time_from,
+			String data_time_to) throws Exception {
+		List<WSData> result = new ArrayList<WSData>();
+
+		JSONObject Criteria = new JSONObject();
+		Criteria.put("building", building);
+		Criteria.put("meter", meter);
+		Criteria.put("funcid", funcid);
+		JSONObject range = new JSONObject();
+		range.put("$gte", data_time_from);
+		range.put("$lte", data_time_to);
+		Criteria.put("data_time", range);
+		JSONObject wrapperObject = new JSONObject();
+		wrapperObject.put("QueryType", "select");
+		wrapperObject.put("Database", ConstantCE.database_name);
+		wrapperObject.put("Datatable", "fjd_" + fjd_i + "_near" + "_" + time_period);
+		wrapperObject.put("Criteria", Criteria);
+		JSONObject queryResult = HBaseSaveManagerRepository.randomZillionAgent().Query(wrapperObject);
+		JSONArray resultContent = (JSONArray) queryResult.get("Content");
+		for (int i = 0; i < resultContent.size(); i++) {
+			JSONObject dataItem = (JSONObject) resultContent.get(i);
+			WSData data = new WSData();
+			String data_time = (String) dataItem.get("data_time");
+			data.setData_from("" + fjd_i);
+			data.setData_time(data_time);
+			data.setLabel_flag(dataItem.get("data_flag").toString());
+			data.setData_value((Double) dataItem.get("data_value"));
+			result.add(data);
+		}
+
+		return result;
+	}
+
+	public static List<WSFlag> GetFlagNear(String building, String meter, long funcid, String time_period, String data_time_from, String data_time_to)
+			throws Exception {
+		List<WSFlag> result = new ArrayList<WSFlag>();
+
+		JSONObject Criteria = new JSONObject();
+		Criteria.put("building", building);
+		Criteria.put("meter", meter);
+		Criteria.put("funcid", funcid);
+		JSONObject range = new JSONObject();
+		range.put("$gte", data_time_from);
+		range.put("$lte", data_time_to);
+		Criteria.put("data_time", range);
+		JSONObject wrapperObject = new JSONObject();
+		wrapperObject.put("QueryType", "select");
+		wrapperObject.put("Database", ConstantCE.database_name);
+		wrapperObject.put("Datatable", "fjd_flag_near" + "_" + time_period);
+		wrapperObject.put("Criteria", Criteria);
+		JSONObject queryResult = HBaseSaveManagerRepository.randomZillionAgent().Query(wrapperObject);
+		JSONArray resultContent = (JSONArray) queryResult.get("Content");
+		for (int i = 0; i < resultContent.size(); i++) {
+			JSONObject dataItem = (JSONObject) resultContent.get(i);
+			WSFlag data = new WSFlag();
+			data.setData_time((String) dataItem.get("data_time"));
+			data.setRely_flag((Long) dataItem.get("rely_flag"));
+			result.add(data);
+		}
+
+		return result;
+	}
+
+	public static WSBuildingData[] GetBuildingdatas(String building) {
+		WSBuildingData[] buildingdatas = null;
+
+		JSONObject Criteria = new JSONObject();
+		Criteria.put("building", building);
+
+		JSONObject wrapperObject = new JSONObject();
+		wrapperObject.put("QueryType", "select");
+		wrapperObject.put("Database", ConstantCE.database_name);
+		wrapperObject.put("Datatable", "original_present");
+		wrapperObject.put("Criteria", Criteria);
+		try {
+			JSONObject queryResult;
+			queryResult = HBaseSaveManagerRepository.randomZillionAgent().Query(wrapperObject);
+			JSONArray resultContent = (JSONArray) queryResult.get("Content");
+			log.info(building + ".size: " + resultContent.size());
+			if (resultContent.size() > 0) {
+				buildingdatas = new WSBuildingData[resultContent.size()];
+				for (int i = 0; i < resultContent.size(); i++) {
+					JSONObject dataItem = (JSONObject) resultContent.get(i);
+
+					WSBuildingData buildingdata = new WSBuildingData();
+					buildingdata.setMeter((String) dataItem.get("meter"));
+					buildingdata.setFuncid((Long) dataItem.get("funcid"));
+					buildingdata.setData_time((String) dataItem.get("receivetime"));
+					buildingdata.setData_value((Double) dataItem.get("data"));
+
+					buildingdatas[i] = buildingdata;
+				}
+			}
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+
+		return buildingdatas;
+	}
+
+	public static void delete_fjd(String table_name, String building, String meter, long funcid, String time_period, String time_from, String time_to)
+			throws Exception {
+		delete_fjd(true, table_name, building, meter, funcid, time_period, time_from, time_to);
+	}
+
+	public static void batch_insert(String table_name, JSONArray InsertObjects) throws Exception {
+		batch_insert(true, table_name, InsertObjects);
+	}
+
+	private static void delete_fjd(boolean time_period_seperate, String table_name, String building, String meter, long funcid, String time_period,
+			String time_from, String time_to) throws Exception {
+		JSONObject Criteria = new JSONObject();
+		Criteria.put("building", building);
+		Criteria.put("meter", meter);
+		Criteria.put("funcid", funcid);
+		if (time_period_seperate) {
+			//
+		} else {
+			Criteria.put("time_period", time_period);
+		}
+		JSONObject range = new JSONObject();
+		range.put("$gte", time_from);
+		range.put("$lte", time_to);
+		Criteria.put("data_time", range);
+		if (time_period_seperate) {
+			ZillionAgentUtil.delete(table_name + "_" + time_period, Criteria);
+		} else {
+			ZillionAgentUtil.delete(table_name, Criteria);
+		}
+	}
+
+	private static void batch_insert(boolean time_period_seperate, String table_name, JSONArray InsertObjects) throws Exception {
+		if (time_period_seperate) {
+			Map<String, JSONArray> InsertObjectsMap = new HashMap<String, JSONArray>();
+			for (int i = 0; i < InsertObjects.size(); i++) {
+				JSONObject InsertObject = (JSONObject) InsertObjects.get(i);
+				String time_period = (String) InsertObject.get("time_period");
+				InsertObject.remove("time_period");
+				if (!InsertObjectsMap.containsKey(time_period)) {
+					InsertObjectsMap.put(time_period, new JSONArray());
+				}
+				JSONArray InsertObjectsInner = InsertObjectsMap.get(time_period);
+				InsertObjectsInner.add(InsertObject);
+			}
+			Iterator<String> keyIter = InsertObjectsMap.keySet().iterator();
+			while (keyIter.hasNext()) {
+				String time_period = keyIter.next();
+				JSONArray InsertObjectsInner = InsertObjectsMap.get(time_period);
+				ZillionAgentUtil.batch_insert(table_name + "_" + time_period, InsertObjectsInner);
+			}
+		} else {
+			ZillionAgentUtil.batch_insert(table_name, InsertObjects);
+		}
+	}
+}

+ 19 - 0
src/main/java/com/persagy/util/ReportRecompute.java

@@ -0,0 +1,19 @@
+package com.persagy.util;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class ReportRecompute {
+	public Date start_time;
+	public Date time_from;
+	public Date time_to;
+	public List<Long> roundList = new ArrayList<Long>();
+	public Map<String, ReportRecomputeItem> pointMap = new HashMap<String, ReportRecomputeItem>();
+
+	public ReportRecompute(Date start_time) {
+		this.start_time = start_time;
+	}
+}

+ 18 - 0
src/main/java/com/persagy/util/ReportRecomputeItem.java

@@ -0,0 +1,18 @@
+package com.persagy.util;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class ReportRecomputeItem {
+	public String meter;
+	public long funcid;
+	public Date time_from;
+	public Date time_to;
+	public List<Long> roundList = new ArrayList<Long>();
+
+	public ReportRecomputeItem(String meter, long funcid) {
+		this.meter = meter;
+		this.funcid = funcid;
+	}
+}

+ 119 - 0
src/main/java/com/persagy/util/RestUtil.java

@@ -0,0 +1,119 @@
+package com.persagy.util;
+
+import cn.hutool.core.thread.ThreadUtil;
+import org.apache.http.HttpResponse;
+import org.apache.http.NameValuePair;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.ByteArrayEntity;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.http.message.BasicNameValuePair;
+
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+public class RestUtil {
+	private static RestUtil instance = new RestUtil();
+
+	public static RestUtil Instance() {
+		return instance;
+	}
+
+	public static RestUtil NewInstance() {
+		return new RestUtil();
+	}
+
+	private RestUtil() {
+
+	}
+
+	DefaultHttpClient client = new DefaultHttpClient();
+
+	public synchronized String Get(String url) throws Exception {
+		try {
+			HttpGet httpget = new HttpGet(url);
+			HttpResponse response = client.execute(httpget);
+			InputStream is = response.getEntity().getContent();
+			ByteArrayOutputStream baos = new ByteArrayOutputStream();
+			int i = -1;
+			while ((i = is.read()) != -1) {
+				baos.write(i);
+			}
+
+			return baos.toString("UTF-8");
+		} catch (Exception e) {
+			ThreadUtil.safeSleep(1000L * 5);
+			client = new DefaultHttpClient();
+			throw e;
+		}
+	}
+
+	public synchronized String PostForm(String url, String paramName, String jsonString) throws Exception {
+		try {
+			HttpPost httpost = new HttpPost(url);
+			List<NameValuePair> nvps = new ArrayList<NameValuePair>();
+			nvps.add(new BasicNameValuePair(paramName, jsonString));
+			httpost.setEntity(new UrlEncodedFormEntity(nvps, "UTF-8"));
+
+			HttpResponse response = client.execute(httpost);
+			InputStream is = response.getEntity().getContent();
+			ByteArrayOutputStream baos = new ByteArrayOutputStream();
+			int i = -1;
+			while ((i = is.read()) != -1) {
+				baos.write(i);
+			}
+
+			return baos.toString("UTF-8");
+		} catch (Exception e) {
+			ThreadUtil.safeSleep(1000L * 5);
+			client = new DefaultHttpClient();
+			throw e;
+		}
+	}
+
+	public synchronized String PostRaw(String url, String jsonString) throws Exception {
+		try {
+			HttpPost httpost = new HttpPost(url);
+			httpost.setEntity(new StringEntity(jsonString, "UTF-8"));
+
+			HttpResponse response = client.execute(httpost);
+			InputStream is = response.getEntity().getContent();
+			ByteArrayOutputStream baos = new ByteArrayOutputStream();
+			int i = -1;
+			while ((i = is.read()) != -1) {
+				baos.write(i);
+			}
+
+			return baos.toString("UTF-8");
+		} catch (Exception e) {
+			ThreadUtil.safeSleep(1000L * 5);
+			client = new DefaultHttpClient();
+			throw e;
+		}
+	}
+
+	public synchronized String PostRaw(String url, byte[] jsonString) throws Exception {
+		try {
+			HttpPost httpost = new HttpPost(url);
+			httpost.setEntity(new ByteArrayEntity(jsonString));
+
+			HttpResponse response = client.execute(httpost);
+			InputStream is = response.getEntity().getContent();
+			ByteArrayOutputStream baos = new ByteArrayOutputStream();
+			int i = -1;
+			while ((i = is.read()) != -1) {
+				baos.write(i);
+			}
+
+			return baos.toString("UTF-8");
+		} catch (Exception e) {
+			ThreadUtil.safeSleep(1000L * 5);
+			client = new DefaultHttpClient();
+			throw e;
+		}
+	}
+}

+ 28 - 0
src/main/java/com/persagy/util/SyncUtil.java

@@ -0,0 +1,28 @@
+package com.persagy.util;
+
+import com.alibaba.fastjson.JSONObject;
+import com.sagacloud.repository.HBaseSaveManagerRepository;
+import com.sagacloud.util.compute_engine.entity.Entity_ci_instance;
+import com.sagacloud.util.compute_engine.entity.Entity_ci_status;
+import com.sagacloud.util.compute_engine.util.ConstantCE;
+import com.sagacloud.util.compute_engine.util.InstanceUtil;
+import com.sagacloud.util.compute_engine.util.ZKSyncUtil;
+import com.zillion.util.zk.ZKWrapper;
+import org.zillion.util.json.FastJsonUtil;
+
+public class SyncUtil {
+	public static void Sync(String object_sign, String instance_name) throws Exception {
+		Entity_ci_instance instance = InstanceUtil.Get(ConstantCE.database_name, object_sign, instance_name);
+		Entity_ci_status status = InstanceUtil.Get_status(ConstantCE.database_name, object_sign, instance_name);
+		if (instance != null) {
+			ZKWrapper ZK = HBaseSaveManagerRepository.randomZillionAgent().container.ZK;
+			String name = instance.getObject_sign() + "_" + instance.getInstance_name();
+			JSONObject instanceJSON = (JSONObject) FastJsonUtil.To_JSON(instance);
+
+			ZKSyncUtil.Sync(ZK, ConstantCE.zk_instance + "/" + name, "true");
+			long compute_interval_seconds = (Long) instanceJSON.get("compute_interval_seconds");
+			ZKSyncUtil.Sync(ZK, ConstantCE.zk_compute_interval + "/" + name, ("" + compute_interval_seconds));
+			ZKSyncUtil.Sync(ZK, ConstantCE.zk_status_request + "/" + name, status.getStatus_request());
+		}
+	}
+}

+ 93 - 0
src/main/java/com/persagy/util/TableUtil.java

@@ -0,0 +1,93 @@
+package com.persagy.util;
+
+import cn.hutool.core.io.resource.ResourceUtil;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.JSONReader;
+import com.sagacloud.repository.HBaseSaveManagerRepository;
+import com.sagacloud.util.compute_engine.util.QueryUtil;
+import org.zillion.util.json.FastJsonUtil;
+
+public class TableUtil {
+    static String[] table_names = {"dy_pointlist", "fjd_0_buildingcomputetime", "fjd_0_compute_request", "fjd_0_metercomputetime", "ci_instance",
+            "ci_instanceinput", "ci_instanceoutput", "ci_status", "dy_reportpointlist", "originalreport_data", "originalreport_change_meter",
+            "originalreport_log", "originalreport_round", "tenant", "tenant_recharge", "tenant_energy", "tenant_energy_meter",
+            "tenant_energy_price"};
+
+    public static void AddTables( String database_name) throws Exception {
+        for (String table_name : table_names) {
+            AddTable( database_name, table_name);
+        }
+    }
+
+    public static void AddTable( String database_name, String table_name) throws Exception {
+        JSONReader json_reader = new JSONReader(ResourceUtil.getUtf8Reader("def_" + table_name + ".json"));
+        Object result = json_reader.readObject();
+        FastJsonUtil.Normalize(result);
+        JSONObject def = (JSONObject) result;
+
+        JSONArray Columns = (JSONArray) def.get("Columns");
+        JSONArray Key = (JSONArray) def.get("Key");
+        JSONObject table_schema = new JSONObject();
+        table_schema.put("Columns", Columns);
+        table_schema.put("Key", Key);
+        try {
+            HBaseSaveManagerRepository.randomZillionAgent().DDL_AddTable(database_name, table_name, table_schema, (JSONArray) def.get("Indexes"));
+        } catch (Exception e) {
+            // log.error(e.getMessage(),e);
+        }
+    }
+
+    public static void ClearTables( String database_name, boolean is_clear) throws Exception {
+        for (String table_name : table_names) {
+            QueryUtil.ClearTable(database_name, table_name, is_clear);
+        }
+    }
+
+    public static void AlterTables( String database_name) throws Exception {
+        String[] logs = {"originalreport_log"};
+        JSONArray Columns_add = new JSONArray();
+        {
+            JSONObject Column = new JSONObject();
+            Column.put("Name", "data_type");
+            Column.put("Type", "String(20)");
+            Columns_add.add(Column);
+        }
+        {
+            JSONObject Column = new JSONObject();
+            Column.put("Name", "time_from");
+            Column.put("Type", "String(20)");
+            Columns_add.add(Column);
+        }
+        {
+            JSONObject Column = new JSONObject();
+            Column.put("Name", "time_to");
+            Column.put("Type", "String(20)");
+            Columns_add.add(Column);
+        }
+        {
+            JSONObject Column = new JSONObject();
+            Column.put("Name", "operate_time");
+            Column.put("Type", "String(20)");
+            Columns_add.add(Column);
+        }
+        {
+            JSONObject Column = new JSONObject();
+            Column.put("Name", "data");
+            Column.put("Type", "Double");
+            Columns_add.add(Column);
+        }
+        JSONObject alter_content = new JSONObject();
+        alter_content.put("Columns_add", Columns_add);
+        for (String table_name : logs) {
+            try {
+                HBaseSaveManagerRepository.randomZillionAgent().DDL_AlterTable(database_name, table_name, "Columns_add", alter_content);
+            } catch (Exception e) {
+                if (e.getMessage().contains("Columns exist:")) {
+                } else {
+                    throw e;
+                }
+            }
+        }
+    }
+}

+ 87 - 0
src/main/java/com/persagy/util/ZillionAgentUtil.java

@@ -0,0 +1,87 @@
+package com.persagy.util;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.sagacloud.repository.HBaseSaveManagerRepository;
+import com.sagacloud.util.compute_engine.util.ConstantCE;
+
+public class ZillionAgentUtil {
+	public static void Generate_round(String object_sign, String instance_name, Long round_new) throws Exception {
+		JSONObject Criteria = new JSONObject();
+		Criteria.put("object_sign", object_sign);
+		Criteria.put("instance_name", instance_name);
+		JSONArray resultContent = select("ce_curround", Criteria);
+		long compute_round;
+		if (round_new == null) {
+			long exist = 0;
+			if (resultContent.size() > 0) {
+				JSONObject roundmax = (JSONObject) resultContent.get(0);
+				exist = (Long) roundmax.get("compute_round");
+			}
+			compute_round = exist + 1;
+		} else {
+			compute_round = round_new;
+		}
+
+		if (resultContent.size() > 0) {
+			JSONObject Set = new JSONObject();
+			Set.put("compute_round", compute_round);
+			update("ce_curround", Criteria, Set);
+		} else {
+			JSONObject InsertObject = new JSONObject();
+			InsertObject.put("object_sign", object_sign);
+			InsertObject.put("instance_name", instance_name);
+			InsertObject.put("compute_round", compute_round);
+			insert("ce_curround", InsertObject);
+		}
+	}
+
+	public static JSONArray select(String table_name, JSONObject Criteria) throws Exception {
+		JSONObject wrapperObject = new JSONObject();
+		wrapperObject.put("QueryType", "select");
+		wrapperObject.put("Database", ConstantCE.database_name);
+		wrapperObject.put("Datatable", table_name);
+		wrapperObject.put("Criteria", Criteria);
+		JSONObject queryResult = HBaseSaveManagerRepository.randomZillionAgent().Query(wrapperObject);
+		JSONArray resultContent = (JSONArray) queryResult.get("Content");
+		return resultContent;
+	}
+
+	public static void insert(String table_name, JSONObject InsertObject) throws Exception {
+		JSONObject wrapperObject = new JSONObject();
+		wrapperObject.put("QueryType", "insert");
+		wrapperObject.put("Database", ConstantCE.database_name);
+		wrapperObject.put("Datatable", table_name);
+		wrapperObject.put("InsertObject", InsertObject);
+		HBaseSaveManagerRepository.randomZillionAgent().Query(wrapperObject);
+	}
+
+	public static void batch_insert(String table_name, JSONArray InsertObjects) throws Exception {
+		JSONObject wrapperObject = new JSONObject();
+		wrapperObject.put("QueryType", "batch_insert");
+		wrapperObject.put("Database", ConstantCE.database_name);
+		wrapperObject.put("Datatable", table_name);
+		wrapperObject.put("InsertObjects", InsertObjects);
+		HBaseSaveManagerRepository.randomZillionAgent().Query(wrapperObject);
+	}
+
+	public static void update(String table_name, JSONObject Criteria, JSONObject Set) throws Exception {
+		JSONObject wrapperObject = new JSONObject();
+		wrapperObject.put("QueryType", "update");
+		wrapperObject.put("Database", ConstantCE.database_name);
+		wrapperObject.put("Datatable", table_name);
+		wrapperObject.put("Criteria", Criteria);
+		wrapperObject.put("Set", Set);
+		HBaseSaveManagerRepository.randomZillionAgent().Query(wrapperObject);
+	}
+
+	public static void delete(String table_name, JSONObject Criteria) throws Exception {
+		JSONObject wrapperObject = new JSONObject();
+		wrapperObject.put("QueryType", "delete");
+		wrapperObject.put("Database", ConstantCE.database_name);
+		wrapperObject.put("Datatable", table_name);
+		wrapperObject.put("Criteria", Criteria);
+		HBaseSaveManagerRepository.randomZillionAgent().Query(wrapperObject);
+	}
+
+}

+ 37 - 0
src/main/java/com/persagy/util/ZooKeeperUtil.java

@@ -0,0 +1,37 @@
+package com.persagy.util;
+
+import java.util.List;
+
+import org.apache.zookeeper.data.Stat;
+
+import com.zillion.util.zk.ZKWrapper;
+
+public class ZooKeeperUtil {
+
+	public static void recursive(ZKWrapper zk, String path) throws Exception {
+		Stat stat = zk.exists(path, false);
+		if (stat == null) {
+			return;
+		}
+
+		List<String> children = zk.getChildren(path, false);
+		for (String child : children) {
+			String parentPath = path.length() == 1 ? "/" : path + "/";
+			String childPath = parentPath + child;
+
+			recursive(zk, childPath);
+		}
+
+		zk.delete(path, -1);
+	}
+
+	public static void recursiveChildren(ZKWrapper zk, String path) throws Exception {
+		List<String> children = zk.getChildren(path, false);
+		for (String child : children) {
+			String parentPath = path.length() == 1 ? "/" : path + "/";
+			String childPath = parentPath + child;
+
+			recursive(zk, childPath);
+		}
+	}
+}

+ 70 - 0
src/main/java/com/persagy/wsentity/SBuilding.java

@@ -0,0 +1,70 @@
+package com.persagy.wsentity;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import javax.xml.bind.annotation.XmlRootElement;
+@Slf4j
+@XmlRootElement(name = "SBuilding")
+public class SBuilding {
+	public SBuilding() {
+
+	}
+
+	public SBuilding(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String buildingSign;
+	String dataDensity;
+	SEnergyModel[] energyModelArray;
+	SBuildingConfig[] buildingConfigArray;
+	SBuildingConfigUse[] buildingConfigUseArray;
+
+	public String getBuildingSign() {
+		return buildingSign;
+	}
+
+	public void setBuildingSign(String buildingSign) {
+		this.buildingSign = buildingSign;
+	}
+
+	public String getDataDensity() {
+		return dataDensity;
+	}
+
+	public void setDataDensity(String dataDensity) {
+		this.dataDensity = dataDensity;
+	}
+
+	public SEnergyModel[] getEnergyModelArray() {
+		return energyModelArray;
+	}
+
+	public void setEnergyModelArray(SEnergyModel[] energyModelArray) {
+		this.energyModelArray = energyModelArray;
+	}
+
+	public SBuildingConfig[] getBuildingConfigArray() {
+		return buildingConfigArray;
+	}
+
+	public void setBuildingConfigArray(SBuildingConfig[] buildingConfigArray) {
+		this.buildingConfigArray = buildingConfigArray;
+	}
+
+	public SBuildingConfigUse[] getBuildingConfigUseArray() {
+		return buildingConfigUseArray;
+	}
+
+	public void setBuildingConfigUseArray(SBuildingConfigUse[] buildingConfigUseArray) {
+		this.buildingConfigUseArray = buildingConfigUseArray;
+	}
+}

+ 72 - 0
src/main/java/com/persagy/wsentity/SBuildingConfig.java

@@ -0,0 +1,72 @@
+package com.persagy.wsentity;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+@Slf4j
+@XmlRootElement(name = "SBuildingConfig")
+public class SBuildingConfig {
+	public SBuildingConfig() {
+
+	}
+
+	public SBuildingConfig(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String energyModelSign;
+	String buildingConfigSign;
+
+	SResearchNode[] researchNodeArray;
+	SComputeUnit[] computeUnitArray;
+	SEnergyModelExpression[] energyModelExpressionArray;
+
+	public String getEnergyModelSign() {
+		return energyModelSign;
+	}
+
+	public void setEnergyModelSign(String energyModelSign) {
+		this.energyModelSign = energyModelSign;
+	}
+
+	public String getBuildingConfigSign() {
+		return buildingConfigSign;
+	}
+
+	public void setBuildingConfigSign(String buildingConfigSign) {
+		this.buildingConfigSign = buildingConfigSign;
+	}
+
+	public SResearchNode[] getResearchNodeArray() {
+		return researchNodeArray;
+	}
+
+	public void setResearchNodeArray(SResearchNode[] researchNodeArray) {
+		this.researchNodeArray = researchNodeArray;
+	}
+
+	public SComputeUnit[] getComputeUnitArray() {
+		return computeUnitArray;
+	}
+
+	public void setComputeUnitArray(SComputeUnit[] computeUnitArray) {
+		this.computeUnitArray = computeUnitArray;
+	}
+
+	public SEnergyModelExpression[] getEnergyModelExpressionArray() {
+		return energyModelExpressionArray;
+	}
+
+	public void setEnergyModelExpressionArray(SEnergyModelExpression[] energyModelExpressionArray) {
+		this.energyModelExpressionArray = energyModelExpressionArray;
+	}
+}

+ 61 - 0
src/main/java/com/persagy/wsentity/SBuildingConfigUse.java

@@ -0,0 +1,61 @@
+package com.persagy.wsentity;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import javax.xml.bind.annotation.XmlRootElement;
+@Slf4j
+@XmlRootElement(name = "SBuildingConfigUse")
+public class SBuildingConfigUse {
+	public SBuildingConfigUse() {
+
+	}
+
+	public SBuildingConfigUse(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String energyModelSign;
+	String bcuseFrom;
+	String bcuseTo;
+	String buildingConfigSign;
+
+	public String getEnergyModelSign() {
+		return energyModelSign;
+	}
+
+	public void setEnergyModelSign(String energyModelSign) {
+		this.energyModelSign = energyModelSign;
+	}
+
+	public String getBcuseFrom() {
+		return bcuseFrom;
+	}
+
+	public void setBcuseFrom(String bcuseFrom) {
+		this.bcuseFrom = bcuseFrom;
+	}
+
+	public String getBcuseTo() {
+		return bcuseTo;
+	}
+
+	public void setBcuseTo(String bcuseTo) {
+		this.bcuseTo = bcuseTo;
+	}
+
+	public String getBuildingConfigSign() {
+		return buildingConfigSign;
+	}
+
+	public void setBuildingConfigSign(String buildingConfigSign) {
+		this.buildingConfigSign = buildingConfigSign;
+	}
+}

+ 53 - 0
src/main/java/com/persagy/wsentity/SComputeUnit.java

@@ -0,0 +1,53 @@
+package com.persagy.wsentity;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+@Slf4j
+@XmlRootElement(name = "SComputeUnit")
+public class SComputeUnit {
+	public SComputeUnit() {
+
+	}
+
+	public SComputeUnit(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String sign;
+	String name;
+	String expression;
+
+	public String getSign() {
+		return sign;
+	}
+
+	public void setSign(String sign) {
+		this.sign = sign;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getExpression() {
+		return expression;
+	}
+
+	public void setExpression(String expression) {
+		this.expression = expression;
+	}
+}

+ 43 - 0
src/main/java/com/persagy/wsentity/SEnergyModel.java

@@ -0,0 +1,43 @@
+package com.persagy.wsentity;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import javax.xml.bind.annotation.XmlRootElement;
+@Slf4j
+@XmlRootElement(name = "SEnergyModel")
+public class SEnergyModel {
+	public SEnergyModel() {
+
+	}
+
+	public SEnergyModel(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String energyModelSign;
+	SEnergyModelNode[] nodeArray;
+
+	public String getEnergyModelSign() {
+		return energyModelSign;
+	}
+
+	public void setEnergyModelSign(String energyModelSign) {
+		this.energyModelSign = energyModelSign;
+	}
+
+	public SEnergyModelNode[] getNodeArray() {
+		return nodeArray;
+	}
+
+	public void setNodeArray(SEnergyModelNode[] nodeArray) {
+		this.nodeArray = nodeArray;
+	}
+}

+ 43 - 0
src/main/java/com/persagy/wsentity/SEnergyModelExpression.java

@@ -0,0 +1,43 @@
+package com.persagy.wsentity;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import javax.xml.bind.annotation.XmlRootElement;
+@Slf4j
+@XmlRootElement(name = "SEnergyModelExpression")
+public class SEnergyModelExpression {
+	public SEnergyModelExpression() {
+
+	}
+
+	public SEnergyModelExpression(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String sign;
+	String expression;
+
+	public String getSign() {
+		return sign;
+	}
+
+	public void setSign(String sign) {
+		this.sign = sign;
+	}
+
+	public String getExpression() {
+		return expression;
+	}
+
+	public void setExpression(String expression) {
+		this.expression = expression;
+	}
+}

+ 52 - 0
src/main/java/com/persagy/wsentity/SEnergyModelNode.java

@@ -0,0 +1,52 @@
+package com.persagy.wsentity;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import javax.xml.bind.annotation.XmlRootElement;
+@Slf4j
+@XmlRootElement(name = "SEnergyModelNode")
+public class SEnergyModelNode {
+	public SEnergyModelNode() {
+
+	}
+
+	public SEnergyModelNode(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String sign;
+	String name;
+	String parentSign;
+
+	public String getSign() {
+		return sign;
+	}
+
+	public void setSign(String sign) {
+		this.sign = sign;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getParentSign() {
+		return parentSign;
+	}
+
+	public void setParentSign(String parentSign) {
+		this.parentSign = parentSign;
+	}
+}

+ 53 - 0
src/main/java/com/persagy/wsentity/SMeter.java

@@ -0,0 +1,53 @@
+package com.persagy.wsentity;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+@Slf4j
+@XmlRootElement(name = "SMeter")
+public class SMeter {
+	public SMeter() {
+
+	}
+
+	public SMeter(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String meterSign;
+	Long funcid;
+	Double ct;
+
+	public String getMeterSign() {
+		return meterSign;
+	}
+
+	public void setMeterSign(String meterSign) {
+		this.meterSign = meterSign;
+	}
+
+	public Long getFuncid() {
+		return funcid;
+	}
+
+	public void setFuncid(Long funcid) {
+		this.funcid = funcid;
+	}
+
+	public Double getCt() {
+		return ct;
+	}
+
+	public void setCt(Double ct) {
+		this.ct = ct;
+	}
+}

+ 80 - 0
src/main/java/com/persagy/wsentity/SResearchNode.java

@@ -0,0 +1,80 @@
+package com.persagy.wsentity;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+@Slf4j
+@XmlRootElement(name = "SResearchNode")
+public class SResearchNode {
+	public SResearchNode() {
+
+	}
+
+	public SResearchNode(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String sign;
+	String name;
+	String parentSign;
+	String isComputeUnit;
+	String energyModelNodeSign;
+	String meter;
+
+	public String getSign() {
+		return sign;
+	}
+
+	public void setSign(String sign) {
+		this.sign = sign;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getParentSign() {
+		return parentSign;
+	}
+
+	public void setParentSign(String parentSign) {
+		this.parentSign = parentSign;
+	}
+
+	public String getIsComputeUnit() {
+		return isComputeUnit;
+	}
+
+	public void setIsComputeUnit(String isComputeUnit) {
+		this.isComputeUnit = isComputeUnit;
+	}
+
+	public String getEnergyModelNodeSign() {
+		return energyModelNodeSign;
+	}
+
+	public void setEnergyModelNodeSign(String energyModelNodeSign) {
+		this.energyModelNodeSign = energyModelNodeSign;
+	}
+
+	public String getMeter() {
+		return meter;
+	}
+
+	public void setMeter(String meter) {
+		this.meter = meter;
+	}
+}

+ 52 - 0
src/main/java/com/persagy/wsentity/SSurvey.java

@@ -0,0 +1,52 @@
+package com.persagy.wsentity;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import javax.xml.bind.annotation.XmlRootElement;
+@Slf4j
+@XmlRootElement(name = "SSurvey")
+public class SSurvey {
+	public SSurvey() {
+
+	}
+
+	public SSurvey(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String projectSign;
+	SMeter[] meterArray;
+	SBuilding[] buildingArray;
+
+	public String getProjectSign() {
+		return projectSign;
+	}
+
+	public void setProjectSign(String projectSign) {
+		this.projectSign = projectSign;
+	}
+
+	public SMeter[] getMeterArray() {
+		return meterArray;
+	}
+
+	public void setMeterArray(SMeter[] meterArray) {
+		this.meterArray = meterArray;
+	}
+
+	public SBuilding[] getBuildingArray() {
+		return buildingArray;
+	}
+
+	public void setBuildingArray(SBuilding[] buildingArray) {
+		this.buildingArray = buildingArray;
+	}
+}

+ 44 - 0
src/main/java/com/persagy/wsentity/SSurveyResult.java

@@ -0,0 +1,44 @@
+package com.persagy.wsentity;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+@Slf4j
+@XmlRootElement(name = "SSurvey")
+public class SSurveyResult {
+	public SSurveyResult() {
+
+	}
+
+	public SSurveyResult(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String projectSign;
+	SSurveyResultItem[] itemArray;
+
+	public String getProjectSign() {
+		return projectSign;
+	}
+
+	public void setProjectSign(String projectSign) {
+		this.projectSign = projectSign;
+	}
+
+	public SSurveyResultItem[] getItemArray() {
+		return itemArray;
+	}
+
+	public void setItemArray(SSurveyResultItem[] itemArray) {
+		this.itemArray = itemArray;
+	}
+}

+ 53 - 0
src/main/java/com/persagy/wsentity/SSurveyResultItem.java

@@ -0,0 +1,53 @@
+package com.persagy.wsentity;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+@Slf4j
+@XmlRootElement(name = "SSurveyResultItem")
+public class SSurveyResultItem {
+	public SSurveyResultItem() {
+
+	}
+
+	public SSurveyResultItem(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String buildingSign;
+	String status;
+	String[] problemArray;
+
+	public String getBuildingSign() {
+		return buildingSign;
+	}
+
+	public void setBuildingSign(String buildingSign) {
+		this.buildingSign = buildingSign;
+	}
+
+	public String getStatus() {
+		return status;
+	}
+
+	public void setStatus(String status) {
+		this.status = status;
+	}
+
+	public String[] getProblemArray() {
+		return problemArray;
+	}
+
+	public void setProblemArray(String[] problemArray) {
+		this.problemArray = problemArray;
+	}
+}

+ 52 - 0
src/main/java/com/persagy/wsentity2/TBranch.java

@@ -0,0 +1,52 @@
+package com.persagy.wsentity2;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import javax.xml.bind.annotation.XmlRootElement;
+@Slf4j
+@XmlRootElement(name = "TBranch")
+public class TBranch {
+	public TBranch() {
+
+	}
+
+	public TBranch(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String sign;
+	String name;
+	String serviceType;
+
+	public String getSign() {
+		return sign;
+	}
+
+	public void setSign(String sign) {
+		this.sign = sign;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getServiceType() {
+		return serviceType;
+	}
+
+	public void setServiceType(String serviceType) {
+		this.serviceType = serviceType;
+	}
+}

+ 53 - 0
src/main/java/com/persagy/wsentity2/TCalculateUnit.java

@@ -0,0 +1,53 @@
+package com.persagy.wsentity2;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+@Slf4j
+@XmlRootElement(name = "TCalculateUnit")
+public class TCalculateUnit {
+	public TCalculateUnit() {
+
+	}
+
+	public TCalculateUnit(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String sign;
+	String name;
+	TCalculateUnit2EnergyItem[] calculateUnit2EnergyItemArray;
+
+	public String getSign() {
+		return sign;
+	}
+
+	public void setSign(String sign) {
+		this.sign = sign;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public TCalculateUnit2EnergyItem[] getCalculateUnit2EnergyItemArray() {
+		return calculateUnit2EnergyItemArray;
+	}
+
+	public void setCalculateUnit2EnergyItemArray(TCalculateUnit2EnergyItem[] calculateUnit2EnergyItemArray) {
+		this.calculateUnit2EnergyItemArray = calculateUnit2EnergyItemArray;
+	}
+}

+ 43 - 0
src/main/java/com/persagy/wsentity2/TCalculateUnit2EnergyItem.java

@@ -0,0 +1,43 @@
+package com.persagy.wsentity2;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import javax.xml.bind.annotation.XmlRootElement;
+@Slf4j
+@XmlRootElement(name = "TCalculateUnit2EnergyItem")
+public class TCalculateUnit2EnergyItem {
+	public TCalculateUnit2EnergyItem() {
+
+	}
+
+	public TCalculateUnit2EnergyItem(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String energyModelSign;
+	String energyItemSign;
+
+	public String getEnergyModelSign() {
+		return energyModelSign;
+	}
+
+	public void setEnergyModelSign(String energyModelSign) {
+		this.energyModelSign = energyModelSign;
+	}
+
+	public String getEnergyItemSign() {
+		return energyItemSign;
+	}
+
+	public void setEnergyItemSign(String energyItemSign) {
+		this.energyItemSign = energyItemSign;
+	}
+}

+ 62 - 0
src/main/java/com/persagy/wsentity2/TConfigUse.java

@@ -0,0 +1,62 @@
+package com.persagy.wsentity2;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+@Slf4j
+@XmlRootElement(name = "TConfigUse")
+public class TConfigUse {
+	public TConfigUse() {
+
+	}
+
+	public TConfigUse(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String startDate;
+	String endDate;
+	String energyType;
+	TConfigUseItem[] itemArray;
+
+	public String getStartDate() {
+		return startDate;
+	}
+
+	public void setStartDate(String startDate) {
+		this.startDate = startDate;
+	}
+
+	public String getEndDate() {
+		return endDate;
+	}
+
+	public void setEndDate(String endDate) {
+		this.endDate = endDate;
+	}
+
+	public String getEnergyType() {
+		return energyType;
+	}
+
+	public void setEnergyType(String energyType) {
+		this.energyType = energyType;
+	}
+
+	public TConfigUseItem[] getItemArray() {
+		return itemArray;
+	}
+
+	public void setItemArray(TConfigUseItem[] itemArray) {
+		this.itemArray = itemArray;
+	}
+}

+ 98 - 0
src/main/java/com/persagy/wsentity2/TConfigUseItem.java

@@ -0,0 +1,98 @@
+package com.persagy.wsentity2;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+@Slf4j
+@XmlRootElement(name = "TConfigUseItem")
+public class TConfigUseItem {
+	public TConfigUseItem() {
+
+	}
+
+	public TConfigUseItem(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String branchSign;
+	String parentSign;
+	String meterSign;
+	Double meterCT;
+	String formula;
+	String energyModelSign;
+	String energyItemSign;
+	String calculateUnitSign;
+
+	public String getBranchSign() {
+		return branchSign;
+	}
+
+	public void setBranchSign(String branchSign) {
+		this.branchSign = branchSign;
+	}
+
+	public String getParentSign() {
+		return parentSign;
+	}
+
+	public void setParentSign(String parentSign) {
+		this.parentSign = parentSign;
+	}
+
+	public String getMeterSign() {
+		return meterSign;
+	}
+
+	public void setMeterSign(String meterSign) {
+		this.meterSign = meterSign;
+	}
+
+	public Double getMeterCT() {
+		return meterCT;
+	}
+
+	public void setMeterCT(Double meterCT) {
+		this.meterCT = meterCT;
+	}
+
+	public String getFormula() {
+		return formula;
+	}
+
+	public void setFormula(String formula) {
+		this.formula = formula;
+	}
+
+	public String getEnergyModelSign() {
+		return energyModelSign;
+	}
+
+	public void setEnergyModelSign(String energyModelSign) {
+		this.energyModelSign = energyModelSign;
+	}
+
+	public String getEnergyItemSign() {
+		return energyItemSign;
+	}
+
+	public void setEnergyItemSign(String energyItemSign) {
+		this.energyItemSign = energyItemSign;
+	}
+
+	public String getCalculateUnitSign() {
+		return calculateUnitSign;
+	}
+
+	public void setCalculateUnitSign(String calculateUnitSign) {
+		this.calculateUnitSign = calculateUnitSign;
+	}
+}

+ 43 - 0
src/main/java/com/persagy/wsentity2/TDefaultFunctionId.java

@@ -0,0 +1,43 @@
+package com.persagy.wsentity2;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import javax.xml.bind.annotation.XmlRootElement;
+@Slf4j
+@XmlRootElement(name = "TDefaultFunctionId")
+public class TDefaultFunctionId {
+	public TDefaultFunctionId() {
+
+	}
+
+	public TDefaultFunctionId(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String energyType;
+	Long funcid;
+
+	public String getEnergyType() {
+		return energyType;
+	}
+
+	public void setEnergyType(String energyType) {
+		this.energyType = energyType;
+	}
+
+	public Long getFuncid() {
+		return funcid;
+	}
+
+	public void setFuncid(Long funcid) {
+		this.funcid = funcid;
+	}
+}

+ 70 - 0
src/main/java/com/persagy/wsentity2/TEnergyItem.java

@@ -0,0 +1,70 @@
+package com.persagy.wsentity2;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import javax.xml.bind.annotation.XmlRootElement;
+@Slf4j
+@XmlRootElement(name = "TEnergyItem")
+public class TEnergyItem {
+	public TEnergyItem() {
+
+	}
+
+	public TEnergyItem(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String sign;
+	String name;
+	String parentSign;
+	String formula;
+	String energyType;
+
+	public String getSign() {
+		return sign;
+	}
+
+	public void setSign(String sign) {
+		this.sign = sign;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getParentSign() {
+		return parentSign;
+	}
+
+	public void setParentSign(String parentSign) {
+		this.parentSign = parentSign;
+	}
+
+	public String getFormula() {
+		return formula;
+	}
+
+	public void setFormula(String formula) {
+		this.formula = formula;
+	}
+
+	public String getEnergyType() {
+		return energyType;
+	}
+
+	public void setEnergyType(String energyType) {
+		this.energyType = energyType;
+	}
+}

+ 71 - 0
src/main/java/com/persagy/wsentity2/TEnergyModel.java

@@ -0,0 +1,71 @@
+package com.persagy.wsentity2;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+import lombok.extern.slf4j.Slf4j;
+import org.zillion.util.json.FastJsonUtil;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+@Slf4j
+@XmlRootElement(name = "TEnergyModel")
+public class TEnergyModel {
+	public TEnergyModel() {
+
+	}
+
+	public TEnergyModel(String str) {
+		try {
+			JSONObject json = (JSONObject) JSON.parse(str);
+			FastJsonUtil.Set_JavaObject(json, this);
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+		}
+	}
+
+	String sign;
+	String name;
+	String buildingSign;
+	String energyType;
+	TEnergyItem[] energyItemArray;
+
+	public String getSign() {
+		return sign;
+	}
+
+	public void setSign(String sign) {
+		this.sign = sign;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getBuildingSign() {
+		return buildingSign;
+	}
+
+	public void setBuildingSign(String buildingSign) {
+		this.buildingSign = buildingSign;
+	}
+
+	public String getEnergyType() {
+		return energyType;
+	}
+
+	public void setEnergyType(String energyType) {
+		this.energyType = energyType;
+	}
+
+	public TEnergyItem[] getEnergyItemArray() {
+		return energyItemArray;
+	}
+
+	public void setEnergyItemArray(TEnergyItem[] energyItemArray) {
+		this.energyItemArray = energyItemArray;
+	}
+}

+ 0 - 0
src/main/java/com/persagy/wsentity2/TMeter.java


Некоторые файлы не были показаны из-за большого количества измененных файлов