Browse Source

ice104 module

hfxc226 2 years ago
parent
commit
e43b5fc672
27 changed files with 1065 additions and 161 deletions
  1. 0 25
      platform-common/src/main/java/com/platform/common/util/iec104/J60870ClientListener.java
  2. 0 18
      platform-common/src/main/java/com/platform/common/util/iec104/Test.java
  3. 47 46
      platform-dao/src/main/java/com/platform/dao/dto/remote/RemoteMeasureDTO.java
  4. 27 27
      platform-dao/src/main/java/com/platform/dao/vo/query/qykh/ProductHelpVO.java
  5. 93 0
      platform-iec/pom.xml
  6. 26 0
      platform-iec/src/main/java/com/platform/iec/IecApplication.java
  7. 7 12
      platform-iec/src/main/java/com/platform/iec/listener/J60870Client.java
  8. 74 0
      platform-iec/src/main/java/com/platform/iec/listener/J60870ClientListener.java
  9. 118 0
      platform-iec/src/main/java/com/platform/iec/listener/MySqlUtil.java
  10. 19 0
      platform-iec/src/main/java/com/platform/iec/listener/Test.java
  11. 6 0
      platform-iec/src/main/resources/application-dev.yml
  12. 6 0
      platform-iec/src/main/resources/application-prod.yml
  13. 6 0
      platform-iec/src/main/resources/application-test.yml
  14. 5 0
      platform-iec/src/main/resources/application.yml
  15. 123 0
      platform-iec/src/main/resources/logback-spring.xml
  16. 4 6
      platform-rest/src/main/java/com/platform/rest/controller/qykh/QykhPlanDetailsController.java
  17. 71 0
      platform-rest/src/main/java/com/platform/rest/controller/qykh/QykhProductHelpController.java
  18. 2 2
      platform-service/src/main/java/com/platform/service/qykh/QykhPlanDetailsService.java
  19. 42 0
      platform-service/src/main/java/com/platform/service/qykh/QykhProductHelpService.java
  20. 42 15
      platform-service/src/main/java/com/platform/service/qykh/impl/QykhPlanDetailsServiceImpl.java
  21. 294 0
      platform-service/src/main/java/com/platform/service/qykh/impl/QykhProductHelpServiceImpl.java
  22. 8 1
      platform-service/src/main/java/com/platform/service/remote/RemoteDegreeLogService.java
  23. 17 7
      platform-service/src/main/java/com/platform/service/remote/RemoteMeasureService.java
  24. 13 0
      platform-service/src/main/java/com/platform/service/remote/impl/RemoteDegreeLogServiceImpl.java
  25. 12 1
      platform-service/src/main/java/com/platform/service/remote/impl/RemoteMeasureServiceImpl.java
  26. 2 1
      platform-service/src/main/resources/application-serviceDev.yml
  27. 1 0
      pom.xml

+ 0 - 25
platform-common/src/main/java/com/platform/common/util/iec104/J60870ClientListener.java

@@ -1,25 +0,0 @@
-package com.platform.common.util.iec104;
-
-import org.openmuc.j60870.ASdu;
-import org.openmuc.j60870.ConnectionEventListener;
-
-import java.io.IOException;
-
-public class J60870ClientListener implements ConnectionEventListener {
-    @Override
-    public void newASdu(ASdu aSdu) {
-        //打印数据,效果见下图
-        System.out.println("接受从站数据:" + aSdu.toString());
-        System.out.println("持续监听中:");
-    }
-
-    @Override
-    public void connectionClosed(IOException e) {
-        e.printStackTrace();
-    }
-
-    @Override
-    public void dataTransferStateChanged(boolean b) {
-
-    }
-}

+ 0 - 18
platform-common/src/main/java/com/platform/common/util/iec104/Test.java

@@ -1,18 +0,0 @@
-package com.platform.common.util.iec104;
-
-import java.io.IOException;
-
-public class Test {
-    public static void main(String[] args) {
-        J60870Client client = null;
-        try {
-            client = new J60870Client();
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-        //dog.start(); //这里不能调用 start 方法
-        //创建了 Thread 对象,把 dog 对象(实现了 Runnable ),放入了 Thread
-        Thread thread = new Thread(client);
-        thread.start();
-    }
-}

+ 47 - 46
platform-dao/src/main/java/com/platform/dao/dto/remote/RemoteMeasureDTO.java

@@ -5,6 +5,7 @@ import com.platform.common.validation.group.UpdateGroup;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
+
 import javax.validation.constraints.*;
 import java.io.Serializable;
 import java.time.LocalDateTime;
@@ -22,82 +23,82 @@ import java.math.BigDecimal;
 @EqualsAndHashCode(callSuper = true)
 public class RemoteMeasureDTO extends BaseDTO implements Serializable {
 
-      /**
+    /**
      * id
      */
-        @NotNull(groups = {UpdateGroup.class}, message = "ID不能为空")
+    @NotNull(groups = {UpdateGroup.class}, message = "ID不能为空")
     private String id;
-          /**
+    /**
      * 设备id
      */
-          private String sbId;
-          /**
+    private String sbId;
+    /**
      * 设备名称
      */
-          private String sbName;
-          /**
+    private String sbName;
+    /**
      * 点位
      */
-          private Integer positionNum;
-          /**
+    private Integer positionNum;
+    /**
      * 类型
      */
-          private Integer type;
-          /**
+    private Integer type;
+    /**
      * 描述
      */
-          private String description;
-          /**
+    private String description;
+    /**
      * 实时数值
      */
-          private String result;
-          /**
+    private String result;
+    /**
      * 系数
      */
-          private BigDecimal ratio;
-          /**
+    private BigDecimal ratio;
+    /**
      * 单位
      */
-          private String unit;
-          /**
+    private String unit;
+    /**
      * 备注
      */
-          private String remark;
-          /**
+    private String remark;
+    /**
      * 创建人
      */
-          private String createdUserId;
-          /**
+    private String createdUserId;
+    /**
      * 更新人
      */
-          private String updateUserId;
-          /**
+    private String updateUserId;
+    /**
      * 创建日期
      */
-        private LocalDateTime createdTime;
-      /**
-       * 创建日期开始
-       */
-      private LocalDateTime createdTimeStart;
-      /**
-       * 创建日期结束
-       */
-      private LocalDateTime createdTimeEnd;
-          /**
+    private LocalDateTime createdTime;
+    /**
+     * 创建日期开始
+     */
+    private LocalDateTime createdTimeStart;
+    /**
+     * 创建日期结束
+     */
+    private LocalDateTime createdTimeEnd;
+    /**
      * 更新日期
      */
-        private LocalDateTime updateTime;
-      /**
-       * 更新日期开始
-       */
-      private LocalDateTime updateTimeStart;
-      /**
-       * 更新日期结束
-       */
-      private LocalDateTime updateTimeEnd;
-        /**
+    private LocalDateTime updateTime;
+    /**
+     * 更新日期开始
+     */
+    private LocalDateTime updateTimeStart;
+    /**
+     * 更新日期结束
+     */
+    private LocalDateTime updateTimeEnd;
+    /**
      * 关键字
      */
-  private String keyword;
+    private String keyword;
 
 }

+ 27 - 27
platform-dao/src/main/java/com/platform/dao/vo/query/qykh/ProductHelpVO.java

@@ -6,6 +6,7 @@ import com.platform.common.bean.BaseDTO;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
+
 import javax.validation.constraints.*;
 import java.io.Serializable;
 import java.time.LocalDateTime;
@@ -20,45 +21,44 @@ import java.time.LocalDate;
 @Data
 @Accessors(chain = true)
 @EqualsAndHashCode(callSuper = true)
-public class ProductHelpVO extends BaseVO implements Serializable{
+public class ProductHelpVO extends BaseVO implements Serializable {
 
     /**
-     * 
+     *
      */
-        private Integer id;
-        /**
-     * 
+    private Integer id;
+    /**
+     *
      */
-        private String title;
-        /**
-     * 
+    private String title;
+    /**
+     * 符文本内容
      */
-        private String descr;
-        /**
-     * 
+    private String descr;
+    /**
+     *
      */
-        private String purl;
-        /**
+    private String purl;
+    /**
      * 对应的产品id
      */
-        private Integer pid;
-        /**
-     * 
+    private Integer pid;
+    /**
+     *
      */
-        private String keywords;
-        /**
-     * 
+    private String keywords;
+    /**
+     *
      */
-        private Integer ord;
-        /**
-     * 
+    private Integer ord;
+    /**
+     *
      */
-        private String digest;
-        /**
-     * 
+    private String digest;
+    /**
+     *
      */
-        private String time;
-    
+    private String time;
 
 
 }

+ 93 - 0
platform-iec/pom.xml

@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>spring-boot-sb-base</artifactId>
+        <groupId>com.platform</groupId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+    <packaging>jar</packaging>
+    <artifactId>platform-iec</artifactId>
+    <name>platform-iec</name>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+        <mysql-connector.version>5.1.35</mysql-connector.version>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <version>8.0.15</version>
+        </dependency>
+        <dependency>
+            <groupId>com.platform</groupId>
+            <artifactId>platform-common</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-aop</artifactId>
+            <version>2.1.6.RELEASE</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-starter-logging</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <!--jackson模块-->
+        <dependency>
+            <groupId>com.fasterxml.jackson.module</groupId>
+            <artifactId>jackson-modules-java8</artifactId>
+            <version>${jackson.modules}</version>
+            <type>pom</type>
+            <scope>import</scope>
+        </dependency>
+
+        <!--测试依赖-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>net.logstash.logback</groupId>
+            <artifactId>logstash-logback-encoder</artifactId>
+            <version>4.9</version>
+        </dependency>
+
+        <dependency>
+            <groupId>ch.qos.logback</groupId>
+            <artifactId>logback-core</artifactId>
+            <version>1.2.3</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-autoconfigure</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <finalName>spring-boot-sb-base-iec</finalName>
+
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

+ 26 - 0
platform-iec/src/main/java/com/platform/iec/IecApplication.java

@@ -0,0 +1,26 @@
+package com.platform.iec;
+
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+import java.util.TimeZone;
+
+/**
+ * @Description
+ * @Author chenli
+ * @Date 2019/7/22
+ * @Version Copyright (c) 2019,北京乾元坤和科技有限公司 All rights reserved.
+ */
+@SpringBootApplication
+public class IecApplication implements CommandLineRunner {
+    public static void main(String[] args) {
+        TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));
+        SpringApplication.run(IecApplication.class, args);
+    }
+
+    @Override
+    public void run(String... args) throws Exception {
+        Thread.currentThread().join();
+    }
+}

+ 7 - 12
platform-common/src/main/java/com/platform/common/util/iec104/J60870Client.java → platform-iec/src/main/java/com/platform/iec/listener/J60870Client.java

@@ -1,11 +1,14 @@
-package com.platform.common.util.iec104;
+package com.platform.iec.listener;
 
 import org.openmuc.j60870.ClientConnectionBuilder;
 import org.openmuc.j60870.Connection;
+import org.springframework.stereotype.Component;
 
+import javax.annotation.Resource;
 import java.io.IOException;
 import java.net.InetAddress;
 
+@Component
 public class J60870Client implements Runnable {
     //监听类,后面代码会给出
     private J60870ClientListener listener;
@@ -14,7 +17,9 @@ public class J60870Client implements Runnable {
     //连接参数,可以配置的参数有好多,比如t0,t1,t2等等
     private ClientConnectionBuilder clientConnectionBuilder;
 
-    public J60870Client() throws IOException {
+    //Runnable的run方法重写
+    @Override
+    public void run() {
         try {
             //获取server端、从站的ip地址对象,这里使用本地ip
             InetAddress address = InetAddress.getByName("127.0.0.1");
@@ -22,21 +27,11 @@ public class J60870Client implements Runnable {
             clientConnectionBuilder = new ClientConnectionBuilder(address);
             //设置socket的连接超时时间
             clientConnectionBuilder.setConnectionTimeout(60000);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    //Runnable的run方法重写
-    @Override
-    public void run() {
-        try {
             //主站与从站连接
             connection = clientConnectionBuilder.build();
             //配置数据回调类
             listener = new J60870ClientListener();
             connection.startDataTransfer(listener);
-
             System.out.println("监听中:");
         } catch (Exception e) {
             e.printStackTrace();

+ 74 - 0
platform-iec/src/main/java/com/platform/iec/listener/J60870ClientListener.java

@@ -0,0 +1,74 @@
+package com.platform.iec.listener;
+
+import lombok.extern.slf4j.Slf4j;
+import org.openmuc.j60870.ASdu;
+import org.openmuc.j60870.ConnectionEventListener;
+import org.openmuc.j60870.ie.InformationObject;
+import org.openmuc.j60870.internal.HexUtils;
+
+import java.io.IOException;
+
+@Slf4j
+public class J60870ClientListener implements ConnectionEventListener {
+
+    @Override
+    public void newASdu(ASdu aSdu) {
+        //打印数据,效果见下图
+        log.info("接受从站数据:" + aSdu.toString());
+        log.info("持续监听中:");
+
+        // 数据类型
+        if (aSdu.getInformationObjects() != null) {
+            InformationObject[] var2 = aSdu.getInformationObjects();
+            int length = var2.length;
+            for (int i = 0; i < length; ++i) {
+                InformationObject informationObject = var2[i];
+                handler(informationObject);
+            }
+        } else {
+            log.info("\nPrivate Information:\n");
+            log.info(HexUtils.bytesToHex(aSdu.getPrivateInformation()));
+        }
+    }
+
+    private void handler(InformationObject informationObject) {
+      /*  ASduType aSduType = aSdu.getTypeIdentification();
+        switch (aSduType) {
+            case M_SP_NA_1:*/
+        handlerMeasure(informationObject);
+   /*             break;
+            case M_SP_TA_1:
+                handlerDegree(informationObject);
+                break;
+        }*/
+    }
+
+    @Override
+    public void connectionClosed(IOException e) {
+        e.printStackTrace();
+    }
+
+    @Override
+    public void dataTransferStateChanged(boolean b) {
+
+    }
+
+
+    /**
+     * 处理遥测数据
+     *
+     * @param informationObject
+     */
+    private void handlerMeasure(InformationObject informationObject) {
+        MySqlUtil.updateRemoteMeasureByPositionNum(informationObject.getInformationObjectAddress(), informationObject.toString());
+    }
+
+    /**
+     * 处理电度数据
+     *
+     * @param informationObject
+     */
+    private void handlerDegree(InformationObject informationObject) {
+        MySqlUtil.addRemoteDegreeByPositionNum(informationObject.getInformationObjectAddress(), informationObject.toString(), null);
+    }
+}

+ 118 - 0
platform-iec/src/main/java/com/platform/iec/listener/MySqlUtil.java

@@ -0,0 +1,118 @@
+package com.platform.iec.listener;
+
+import com.platform.common.exception.BusinessException;
+import com.platform.common.exception.DeniedException;
+import com.platform.common.util.DateUtils;
+import com.platform.common.util.IdGeneratorUtils;
+import com.platform.common.util.StringUtils;
+import lombok.extern.slf4j.Slf4j;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.time.LocalDateTime;
+
+@Slf4j
+public class MySqlUtil {
+    //是否连接数据库
+    public static String mysql_open = "false";
+    //数据库连接地址
+    public static String mysql_url = "jdbc:mysql://123.60.19.203:5006/hitch-sb";
+    //用户名
+    public static String mysql_username = "root";
+    //密码
+    public static String mysql_password = "mysql?MYSQLmoniu123";//admindljjk
+    //驱动名称
+    public static String mysql_driver = "com.mysql.cj.jdbc.Driver";
+
+    private static Connection conn = null;
+
+    public static Connection getConnection() {
+
+        try {
+            Class.forName(mysql_driver);
+            conn = DriverManager.getConnection(mysql_url, mysql_username, mysql_password);
+
+        } catch (ClassNotFoundException e) {
+            e.printStackTrace();
+        } catch (SQLException e) {
+            e.printStackTrace();
+            closeConn();
+        }
+        return conn;
+    }
+
+    public static void closeConn() {
+        try {
+            conn.close();
+        } catch (SQLException e) {
+            e.printStackTrace();
+        }
+    }
+
+    public static void updateRemoteMeasureByPositionNum(Integer positionNum, String result) {
+        Statement stmt = null;
+        StringBuffer updateSql = new StringBuffer("update " + "t_remote_measure" + " set " +
+                "result='" + result +
+                "' where position_num=" + positionNum);
+        log.info("更新数据:" + updateSql);
+        try {
+            conn = getConnection();
+            stmt = conn.createStatement();
+            // 获取总条数
+            int num = stmt.executeUpdate(updateSql.toString());
+            if (num != 1) {
+                throw new BusinessException("更新t_remote_measure失败,定位信息:" +positionNum );
+                // 找不到定位数据,属于新增,则对应新增进入库,但是没有系数也不好处理
+            }
+            stmt.close();
+            closeConn();
+        } catch (SQLException e1) {
+            e1.printStackTrace();
+            throw new DeniedException("获取乾元数据库连接失败" + e1.getCause().getMessage());
+        } finally {
+            try {
+                if (stmt != null) {
+                    stmt.close();
+                }
+                if (conn != null) {
+                    closeConn();
+                }
+            } catch (Exception e) {
+
+            }
+        }
+    }
+
+    public static void addRemoteDegreeByPositionNum(Integer positionNum, String result, String time) {
+        Statement stmt = null;
+        try {
+            if (StringUtils.isBlank(time)) {
+                time = DateUtils.dateToString(LocalDateTime.now(), DateUtils.PATTERN_YMD_HMS);
+            }
+            StringBuffer sql = new StringBuffer();
+            sql.append("insert into " + " t_remote_degree_log " +
+                    " (id,position_num,result,created_time) values ");
+            sql.append("(");
+            sql.append("'" + IdGeneratorUtils.getObjectId() + "',");
+            sql.append("" + positionNum + ",");
+            sql.append("'" + result + "',");
+            sql.append("'" + time + "'");
+            sql.append(")");
+            log.info("----------" + sql.toString());
+            conn = getConnection();
+            stmt = conn.createStatement();
+            stmt.executeUpdate(sql.toString());
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                stmt.close();
+                closeConn();
+            } catch (Exception e1) {
+                e1.printStackTrace();
+            }
+        }
+    }
+}

+ 19 - 0
platform-iec/src/main/java/com/platform/iec/listener/Test.java

@@ -0,0 +1,19 @@
+package com.platform.iec.listener;
+
+
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+
+@Component
+public class Test {
+
+    @PostConstruct
+    public  void init()  {
+        System.out.println("启动监听:");
+        J60870Client client = null;
+        client = new J60870Client();
+        Thread thread = new Thread(client);
+        thread.start();
+    }
+}

+ 6 - 0
platform-iec/src/main/resources/application-dev.yml

@@ -0,0 +1,6 @@
+spring:
+  application:
+    name: platform-iec
+platform:
+  slf4j:
+    data: D://logs

+ 6 - 0
platform-iec/src/main/resources/application-prod.yml

@@ -0,0 +1,6 @@
+spring:
+  application:
+    name: platform-iec
+platform:
+  slf4j:
+    data: D://xajg

+ 6 - 0
platform-iec/src/main/resources/application-test.yml

@@ -0,0 +1,6 @@
+spring:
+  application:
+    name: platform-iec
+platform:
+  slf4j:
+    data: D://xajg

+ 5 - 0
platform-iec/src/main/resources/application.yml

@@ -0,0 +1,5 @@
+spring:
+  profiles:
+    active: dev
+  main:
+    web-application-type: none

+ 123 - 0
platform-iec/src/main/resources/logback-spring.xml

@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration debug="false" scan="false">
+    <springProperty scop="context" name="spring.application.name" source="spring.application.name" defaultValue=""/>
+    <springProperty scop="context" name="platform.slf4j.data" source="platform.slf4j.data" defaultValue="D://home//project"/>
+    <springProperty scop="context" name="logstash.ip_port" source="logstash.ip_port" defaultValue=""/>
+    <property name="log.path" value="${platform.slf4j.data}/logs/${spring.application.name}"/>
+    <!-- 彩色日志格式 -->
+    <property name="CONSOLE_LOG_PATTERN"
+              value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
+    <!-- 彩色日志依赖的渲染类 -->
+    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
+    <conversionRule conversionWord="wex"
+                    converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
+    <conversionRule conversionWord="wEx"
+                    converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
+    <!-- Console log output -->
+    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
+        </encoder>
+    </appender>
+
+    <appender name="error_file" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/error.log</file>
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>ERROR</level>
+        </filter>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <!--日志文件输出的文件名 -->
+            <fileNamePattern>${log.path}/%d{yyyy-MM-dd}/error.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
+            <!--日志文件保留天数 -->
+            <maxFileSize>500MB</maxFileSize>
+            <!--日志文件保留天数 -->
+            <maxHistory>30</maxHistory>
+        </rollingPolicy>
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{80} - %msg%n
+            </pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <!-- Log file debug output -->
+    <appender name="info_file" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/info.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${log.path}/%d{yyyy-MM-dd}/info.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
+            <maxFileSize>500MB</maxFileSize>
+            <maxHistory>30</maxHistory>
+        </rollingPolicy>
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{80} - %msg%n
+            </pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <appender name="async_info_file" class="net.logstash.logback.appender.LoggingEventAsyncDisruptorAppender">
+        <appender-ref ref="info_file"/>
+    </appender>
+
+    <!--<appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
+        <destination>${logstash.ip_port}</destination>
+        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
+        <queueSize>1048576</queueSize>
+        <keepAliveDuration>5 minutes</keepAliveDuration>
+        &lt;!&ndash;<customFields>{"application-name":"data-repo-interface"}</customFields>&ndash;&gt;
+        &lt;!&ndash;<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>INFO</level>
+        </filter>
+        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
+            <evaluator> <!– 默认为 ch.qos.logback.classic.boolex.JaninoEventEvaluator –>
+                <expression>return message.contains("billing");</expression>
+            </evaluator>
+            <OnMatch>ACCEPT</OnMatch>
+            <OnMismatch>DENY</OnMismatch>
+        </filter>&ndash;&gt;
+    </appender>-->
+    <!-- logstash处理日志 -->
+    <!--<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
+        <destination>${logstash.ip_port}</destination>
+        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
+    </appender>
+
+    <logger name="elk_logger" level="INFO" additivity="false">
+        <appender-ref ref="LOGSTASH"/>
+    </logger>-->
+
+    <!-- 开发环境 -->
+    <springProfile name="dev">
+        <logger name="com.platform" level="DEBUG"/>
+        <logger name="com.platform.dao.mapper.upms.SysLogMapper" level="ERROR"/>
+
+        <root level="INFO">
+            <appender-ref ref="stdout"/>
+            <appender-ref ref="info_file"/>
+            <appender-ref ref="error_file"/>
+        </root>
+    </springProfile>
+
+    <!-- 测试环境 -->
+    <springProfile name="test">
+        <logger name="com.platform" level="DEBUG"/>
+        <logger name="com.platform.dao.mapper.upms.SysLogMapper" level="ERROR"/>
+        <root level="INFO">
+            <appender-ref ref="stdout"/>
+            <appender-ref ref="info_file"/>
+            <appender-ref ref="error_file"/>
+        </root>
+    </springProfile>
+
+    <!-- 生产环境 -->
+    <springProfile name="prod">
+        <logger name="com.platform" level="DEBUG"/>
+        <logger name="com.platform.dao.mapper.upms.SysLogMapper" level="ERROR"/>
+        <root level="INFO">
+            <appender-ref ref="async_info_file"/>
+            <appender-ref ref="error_file"/>
+        </root>
+    </springProfile>
+</configuration>

+ 4 - 6
platform-rest/src/main/java/com/platform/rest/controller/qykh/QykhPlanDetails.java → platform-rest/src/main/java/com/platform/rest/controller/qykh/QykhPlanDetailsController.java

@@ -3,8 +3,6 @@ package com.platform.rest.controller.qykh;
 import com.platform.common.util.R;
 import com.platform.common.validation.group.AddGroup;
 import com.platform.common.validation.group.UpdateGroup;
-import com.platform.dao.dto.sb.SbTypeDTO;
-import com.platform.dao.entity.sb.SbType;
 import com.platform.dao.vo.query.qykh.PlandetailsVO;
 import com.platform.rest.log.annotation.SysLog;
 import com.platform.service.qykh.QykhPlanDetailsService;
@@ -16,7 +14,7 @@ import org.springframework.web.bind.annotation.*;
 @RestController
 @AllArgsConstructor
 @RequestMapping("/qykh/plan/details")
-public class QykhPlanDetails {
+public class QykhPlanDetailsController {
     private final QykhPlanDetailsService qykhPlanDetailsService;
     /**
      * 通过id查询单条记录
@@ -35,9 +33,9 @@ public class QykhPlanDetails {
      * @param sbTypeDTO 设备类别DTO
      * @return R
      */
-    @SysLog("新增设备类别")
+    @SysLog("新增")
     @PostMapping
-    @PreAuthorize("@pms.hasPermission('sb-types-add')")
+    @PreAuthorize("@pms.hasPermission('plan-details-add')")
     public R save(@Validated({AddGroup.class}) @RequestBody PlandetailsVO sbTypeDTO) {
         return new R<>(qykhPlanDetailsService.insertSingle(sbTypeDTO));
     }
@@ -61,7 +59,7 @@ public class QykhPlanDetails {
      */
     @SysLog("修改")
     @PutMapping("/{id}")
-    @PreAuthorize("@pms.hasPermission('guarantee-guarantee-infos-edit')")
+    @PreAuthorize("@pms.hasPermission('plan-details-edit')")
     public R update(@PathVariable("id") String id, @Validated({UpdateGroup.class}) @RequestBody PlandetailsVO infoAdapterVO) {
         qykhPlanDetailsService.modModel(infoAdapterVO);
         return new R();

+ 71 - 0
platform-rest/src/main/java/com/platform/rest/controller/qykh/QykhProductHelpController.java

@@ -0,0 +1,71 @@
+package com.platform.rest.controller.qykh;
+
+import com.platform.common.util.R;
+import com.platform.common.validation.group.AddGroup;
+import com.platform.common.validation.group.UpdateGroup;
+import com.platform.dao.vo.query.qykh.PlandetailsVO;
+import com.platform.dao.vo.query.qykh.ProductHelpVO;
+import com.platform.rest.log.annotation.SysLog;
+import com.platform.service.qykh.QykhPlanDetailsService;
+import com.platform.service.qykh.QykhProductHelpService;
+import lombok.AllArgsConstructor;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/qykh/product/helps")
+public class QykhProductHelpController {
+    private final QykhProductHelpService qykhProductHelpService;
+    /**
+     * 通过id查询单条记录
+     *
+     * @param id 主键
+     * @return R
+     */
+    @GetMapping("/{id}")
+    public R getById(@PathVariable("id") Integer id) {
+        return new R(qykhProductHelpService.selectSingle(id));
+    }
+
+    /**
+     * 新增记录
+     *
+     * @param sbTypeDTO 设备类别DTO
+     * @return R
+     */
+    @SysLog("新增")
+    @PostMapping
+    @PreAuthorize("@pms.hasPermission('product-helps-add')")
+    public R save(@Validated({AddGroup.class}) @RequestBody ProductHelpVO sbTypeDTO) {
+        return new R<>(qykhProductHelpService.insertSingle(sbTypeDTO));
+    }
+    
+    /**
+     * 获取分页
+     *
+     * @param pageNum 当前页码
+     * @param pageSize 每页条数
+     * @return R
+     */
+    @GetMapping("/page")
+    public R query(ProductHelpVO dto, @RequestParam(defaultValue = "1") int pageNum, @RequestParam(defaultValue = "20") int pageSize) {
+        return new R(qykhProductHelpService.selectPage(pageNum,pageSize,dto));
+    }
+
+    /**
+     * 修改某条记录
+     * @param infoAdapterVO 电子保函表DTO
+     * @return R
+     */
+    @SysLog("修改")
+    @PutMapping("/{id}")
+    @PreAuthorize("@pms.hasPermission('product-helps-edit')")
+    public R update(@PathVariable("id") String id, @Validated({UpdateGroup.class}) @RequestBody ProductHelpVO infoAdapterVO) {
+        qykhProductHelpService.modModel(infoAdapterVO);
+        return new R();
+    }
+
+
+}

+ 2 - 2
platform-service/src/main/java/com/platform/service/qykh/QykhPlanDetailsService.java

@@ -14,9 +14,9 @@ public interface QykhPlanDetailsService {
     /**
      * 单个数据查询
      *
-     * @param vo
+     * @param id
      */
-    String selectSingle(Integer id);
+    PlandetailsVO selectSingle(Integer id);
 
     /**
      * 更新

+ 42 - 0
platform-service/src/main/java/com/platform/service/qykh/QykhProductHelpService.java

@@ -0,0 +1,42 @@
+package com.platform.service.qykh;
+
+import com.platform.dao.bean.MyVOPage;
+import com.platform.dao.vo.query.qykh.PlandetailsVO;
+import com.platform.dao.vo.query.qykh.ProductHelpVO;
+
+public interface QykhProductHelpService {
+
+    /**
+     * 单个数据插入
+     * @param vo
+     */
+    String insertSingle(ProductHelpVO vo);
+
+    /**
+     * 单个数据查询
+     *
+     * @param id
+     */
+    ProductHelpVO selectSingle(Integer id);
+
+    /**
+     * 更新
+     *
+     * @param vo
+     */
+    void modModel(ProductHelpVO vo);
+
+    /**
+     * 分页查询
+     * @param pageNum
+     * @param pageSize
+     * @param plandetailsVO 查询对象
+     */
+    MyVOPage<ProductHelpVO> selectPage(int pageNum, int pageSize, ProductHelpVO plandetailsVO );
+
+    /**
+     * 统一手动插入
+     * @param sql
+     */
+    void centerInsertBatch(String sql);
+}

+ 42 - 15
platform-service/src/main/java/com/platform/service/qykh/impl/QykhPlanDetailsServiceImpl.java

@@ -50,9 +50,9 @@ public class QykhPlanDetailsServiceImpl implements QykhPlanDetailsService {
         StringBuffer countSql = new StringBuffer("select count(*) ");
         StringBuffer sql = new StringBuffer(" from " + info_table_name + " where 1 = 1 ");
         if (StringUtils.isNotBlank(guaranteeInfoDTO.getPlantitle())) {
-            sql.append("and ProjectNo like '%" + guaranteeInfoDTO.getPlantitle() + "%' ");
+            sql.append("and plantitle like '%" + guaranteeInfoDTO.getPlantitle() + "%' ");
         }
-        sql.append(" order by Insert_Time desc ");
+        sql.append(" order by time desc ");
         try {
             conn = qykhDataSource.getConnection();
             stmt = conn.createStatement();
@@ -79,7 +79,7 @@ public class QykhPlanDetailsServiceImpl implements QykhPlanDetailsService {
             return myVOPage;
         } catch (SQLException e1) {
             e1.printStackTrace();
-            throw new DeniedException("获取宿州数据库连接失败" + e1.getCause().getMessage());
+            throw new DeniedException("获取乾元数据库连接失败" + e1.getCause().getMessage());
         } finally {
             try {
                 if (rs != null) {
@@ -104,14 +104,14 @@ public class QykhPlanDetailsServiceImpl implements QykhPlanDetailsService {
         StringBuffer updateSql = new StringBuffer("update " + info_table_name + " set " +
                 "plantitle='" + vo.getPlantitle() +
                 "',plancontext='" + vo.getPlancontext() +
-                "',shortdesc='" + vo.getShortdesc() +
+         /*       "',shortdesc='" + vo.getShortdesc() +
                 "',planid='" + vo.getPlanid() +
                 "',orderid='" + vo.getOrderid() +
                 "',digest='" + vo.getDigest() +
                 "',keywords='" + vo.getKeywords() +
                 "',seoid='" + vo.getSeoid() +
-                "',time='" + vo.getTime() +
-                "' where id='" + vo.getId() + "'");
+                "',time='" + vo.getTime() +*/
+                "' where id=" + vo.getId() + "");
         log.info("更新数据:" + updateSql);
         try {
             conn = qykhDataSource.getConnection();
@@ -125,7 +125,7 @@ public class QykhPlanDetailsServiceImpl implements QykhPlanDetailsService {
             conn.close();
         } catch (SQLException e1) {
             e1.printStackTrace();
-            throw new DeniedException("获取宿州数据库连接失败" + e1.getCause().getMessage());
+            throw new DeniedException("获取乾元数据库连接失败" + e1.getCause().getMessage());
         } finally {
             try {
                 if (stmt != null) {
@@ -213,10 +213,12 @@ public class QykhPlanDetailsServiceImpl implements QykhPlanDetailsService {
     }
 
     @Override
-    public String selectSingle(Integer id) {
+    public PlandetailsVO selectSingle(Integer id) {
         try {
+            PlandetailsVO vo = new PlandetailsVO();
             StringBuffer sql = new StringBuffer();
             sql.append("select " +
+                    "id," +
                     "plantitle," +
                     "plancontext," +
                     "shortdesc," +
@@ -227,14 +229,39 @@ public class QykhPlanDetailsServiceImpl implements QykhPlanDetailsService {
                     "seoid, " +
                     "time " +
                     "from "
-                    + info_table_name + " where id = '" + id + "'");
-            ResultSet set = queryQykh(sql.toString());
-            log.info(sql.toString());
-            if (set != null) {
-                log.info(JsonUtils.objectToJson(set));
-                return JsonUtils.objectToJson(set);
+                    + info_table_name + " where id = " + id + "");
+            ResultSet rs = null;
+            Connection conn = null;
+            Statement stmt = null;
+            try {
+                conn = qykhDataSource.getConnection();
+                stmt = conn.createStatement();
+                rs = stmt.executeQuery(sql.toString());
+                rs.next();
+                vo.setId(rs.getInt(1));
+                vo.setPlantitle(rs.getString(2));
+                vo.setPlancontext(rs.getString(3));
+                vo.setShortdesc(rs.getString(4));
+                vo.setPlanid(rs.getInt(5));
+                vo.setOrderid(rs.getInt(6));
+                vo.setDigest(rs.getString(7));
+                vo.setKeywords(rs.getString(8));
+                vo.setSeoid(rs.getInt(9));
+                vo.setTime(rs.getString(10));
+                return vo;
+            } catch (Exception e) {
+                log.info(e.getCause().getMessage());
+                e.printStackTrace();
+                //throw new DeniedException("交易中心插入报错"+e.getCause().getMessage());
+            } finally {
+                try {
+                    rs.close();
+                    stmt.close();
+                    conn.close();
+                } catch (Exception e1) {
+                    e1.printStackTrace();
+                }
             }
-            return id + "";
         } catch (Exception e) {
             e.printStackTrace();
         }

+ 294 - 0
platform-service/src/main/java/com/platform/service/qykh/impl/QykhProductHelpServiceImpl.java

@@ -0,0 +1,294 @@
+package com.platform.service.qykh.impl;
+
+import com.github.pagehelper.Page;
+import com.platform.common.exception.BusinessException;
+import com.platform.common.exception.DeniedException;
+import com.platform.common.util.DateUtils;
+import com.platform.common.util.JsonUtils;
+import com.platform.common.util.StringUtils;
+import com.platform.dao.bean.MyVOPage;
+import com.platform.dao.vo.query.qykh.PlandetailsVO;
+import com.platform.dao.vo.query.qykh.ProductHelpVO;
+import com.platform.service.qykh.QykhPlanDetailsService;
+import com.platform.service.qykh.QykhProductHelpService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import javax.sql.DataSource;
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
+
+@Service("qykhProductHelpService")
+@Slf4j
+public class QykhProductHelpServiceImpl implements QykhProductHelpService {
+    @Resource
+    private DataSource qykhDataSource;
+
+    @Value("${qykh.product_help}")
+    private String info_table_name;
+
+    @Override
+    public MyVOPage<ProductHelpVO> selectPage(int pageNum, int pageSize, ProductHelpVO guaranteeInfoDTO) {
+        MyVOPage<ProductHelpVO> myVOPage = new MyVOPage<>();
+        myVOPage.setPageNum(pageNum);
+        myVOPage.setPageSize(pageSize);
+        Connection conn = null;
+        Statement stmt = null;
+        ResultSet rs = null;
+        StringBuffer querySql = new StringBuffer("select " +
+                "id," +
+                "title," +
+                "descr," +
+                "purl," +
+                "pid," +
+                "keywords," +
+                "ord," +
+                "digest," +
+                "time ");
+        StringBuffer countSql = new StringBuffer("select count(*) ");
+        StringBuffer sql = new StringBuffer(" from " + info_table_name + " where 1 = 1 ");
+        if (StringUtils.isNotBlank(guaranteeInfoDTO.getTitle())) {
+            sql.append("and title like '%" + guaranteeInfoDTO.getTitle() + "%' ");
+        }
+        sql.append(" order by time desc ");
+        try {
+            conn = qykhDataSource.getConnection();
+            stmt = conn.createStatement();
+            // 获取总条数
+            rs = stmt.executeQuery(countSql.append(sql).toString());
+            rs.next();
+            long total = rs.getLong(1);
+            Page page = new Page(pageNum, pageSize);
+            page.setTotal(total);
+            myVOPage.setPages(page.getPages());
+            myVOPage.setTotal(total);
+            if (total < 1) {
+                myVOPage.setRows(new ArrayList<ProductHelpVO>());
+                return myVOPage;
+            }
+            int startNum = (pageNum - 1) * pageSize;
+            sql.append("limit " + startNum + "," + pageSize);
+            rs = stmt.executeQuery(querySql.append(sql).toString());
+            // 封装数据
+            myVOPage.setRows(packageInfo(rs));
+            rs.close();
+            stmt.close();
+            conn.close();
+            return myVOPage;
+        } catch (SQLException e1) {
+            e1.printStackTrace();
+            throw new DeniedException("获取乾元数据库连接失败" + e1.getCause().getMessage());
+        } finally {
+            try {
+                if (rs != null) {
+                    rs.close();
+                }
+                if (stmt != null) {
+                    stmt.close();
+                }
+                if (conn != null) {
+                    conn.close();
+                }
+            } catch (Exception e) {
+
+            }
+        }
+    }
+
+    @Override
+    public void modModel(ProductHelpVO vo) {
+        Connection conn = null;
+        Statement stmt = null;
+        StringBuffer updateSql = new StringBuffer("update " + info_table_name + " set " +
+                "title='" + vo.getTitle() +
+                "',descr='" + vo.getDescr() +/*
+                "',purl='" + vo.getPurl() +
+                "',pid='" + vo.getPid()
+                "',digest='" + vo.getDigest() +
+                "',keywords='" + vo.getKeywords() +
+                "',ord='" + vo.getOrd() +
+                "',time='" + vo.getTime() +*/
+                "' where id='" + vo.getId() + "'");
+        log.info("更新数据:" + updateSql);
+        try {
+            conn = qykhDataSource.getConnection();
+            stmt = conn.createStatement();
+            // 获取总条数
+            int result = stmt.executeUpdate(updateSql.toString());
+            if (result != 1) {
+                throw new BusinessException("");
+            }
+            stmt.close();
+            conn.close();
+        } catch (SQLException e1) {
+            e1.printStackTrace();
+            throw new DeniedException("获取乾元数据库连接失败" + e1.getCause().getMessage());
+        } finally {
+            try {
+                if (stmt != null) {
+                    stmt.close();
+                }
+                if (conn != null) {
+                    conn.close();
+                }
+            } catch (Exception e) {
+
+            }
+        }
+    }
+
+    private List<ProductHelpVO> packageInfo(ResultSet rs) throws SQLException {
+        List<ProductHelpVO> list = new ArrayList<>();
+        while (rs.next()) {
+            ProductHelpVO vo = new ProductHelpVO();
+            vo.setId(rs.getInt(1));
+            vo.setTitle(rs.getString(2));
+            vo.setDescr(rs.getString(3));
+            vo.setPurl(rs.getString(4));
+            vo.setPid(rs.getInt(5));
+            vo.setKeywords(rs.getString(6));
+            vo.setOrd(rs.getInt(7));
+            vo.setDigest(rs.getString(8));
+            vo.setTime(rs.getString(9));
+            list.add(vo);
+        }
+        return list;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public String insertSingle(ProductHelpVO vo) {
+        try {
+            if (vo != null) {
+                if (vo.getTime() == null) {
+                    vo.setTime(DateUtils.dateToString(LocalDateTime.now(), DateUtils.PATTERN_YMD_HMS));
+                }
+                StringBuffer sql = new StringBuffer();
+                sql.append("insert into " + info_table_name +
+                        " (title,descr,purl,pid,keywords,ord,digest,time) values ");
+                sql.append("('");
+                sql.append("'" + vo.getTitle() + "',");
+                sql.append("'" + vo.getDescr() + "',");
+                sql.append("'" + vo.getPurl() + "',");
+                sql.append("'" + vo.getPid() + "',");
+                sql.append("'" + vo.getKeywords() + "',");
+                sql.append("'" + vo.getOrd() + "',");
+                sql.append("'" + vo.getDigest() + "',");
+                sql.append("'" + vo.getTime() + "',");
+                sql.append(")");
+                log.info("----------" + sql.toString());
+                centerInsertBatch(sql.toString());
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            //throw new DeniedException("单个宿州交易中心失败,请联系技术处理");
+        }
+        return "推送成功";
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void centerInsertBatch(String sql) {
+        Connection conn = null;
+        Statement stmt = null;
+        try {
+            conn = qykhDataSource.getConnection();
+            stmt = conn.createStatement();
+            stmt.executeUpdate(sql);
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                stmt.close();
+                conn.close();
+            } catch (Exception e1) {
+                e1.printStackTrace();
+            }
+        }
+    }
+
+    @Override
+    public ProductHelpVO selectSingle(Integer id) {
+        try {
+            ProductHelpVO vo = new ProductHelpVO();
+            StringBuffer sql = new StringBuffer();
+            sql.append("select " +
+                    "id," +
+                    "title," +
+                    "descr," +
+                    "purl," +
+                    "pid," +
+                    "keywords," +
+                    "ord," +
+                    "digest," +
+                    "time " +
+                    "from "
+                    + info_table_name + " where id = '" + id + "'");
+            ResultSet rs = null;
+            Connection conn = null;
+            Statement stmt = null;
+            try {
+                conn = qykhDataSource.getConnection();
+                stmt = conn.createStatement();
+                rs = stmt.executeQuery(sql.toString());
+                rs.next();
+                vo.setId(rs.getInt(1));
+                vo.setTitle(rs.getString(2));
+                vo.setDescr(rs.getString(3));
+                vo.setPurl(rs.getString(4));
+                vo.setPid(rs.getInt(5));
+                vo.setKeywords(rs.getString(6));
+                vo.setOrd(rs.getInt(7));
+                vo.setDigest(rs.getString(8));
+                vo.setTime(rs.getString(9));
+                return vo;
+            } catch (Exception e) {
+                log.info(e.getCause().getMessage());
+                e.printStackTrace();
+                //throw new DeniedException("交易中心插入报错"+e.getCause().getMessage());
+            } finally {
+                try {
+                    rs.close();
+                    stmt.close();
+                    conn.close();
+                } catch (Exception e1) {
+                    e1.printStackTrace();
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public ResultSet queryQykh(String sql) {
+        Connection conn = null;
+        Statement stmt = null;
+        try {
+            conn = qykhDataSource.getConnection();
+            stmt = conn.createStatement();
+            return stmt.executeQuery(sql);
+        } catch (Exception e) {
+            log.info(e.getCause().getMessage());
+            e.printStackTrace();
+            //throw new DeniedException("交易中心插入报错"+e.getCause().getMessage());
+        } finally {
+            try {
+                stmt.close();
+                conn.close();
+            } catch (Exception e1) {
+                e1.printStackTrace();
+            }
+        }
+        return null;
+    }
+}

+ 8 - 1
platform-service/src/main/java/com/platform/service/remote/RemoteDegreeLogService.java

@@ -32,4 +32,11 @@ public interface RemoteDegreeLogService extends IBaseService<RemoteDegreeLog, Re
      */
     AbstractPageResultBean<RemoteDegreeLogVO> selectPageList(RemoteDegreeLogDTO record, int pageNum, int pageSize);
 
-                                                                                                                                                                            }
+    /**
+     * 根据点位新增电度结果数据
+     *
+     * @param positionNum:
+     * @param result:
+     * @return :
+     */
+    void addByPositionNum(Integer positionNum, String result) ;                                                                                                                     }

+ 17 - 7
platform-service/src/main/java/com/platform/service/remote/RemoteMeasureService.java

@@ -18,16 +18,17 @@ import java.util.List;
  */
 public interface RemoteMeasureService extends IBaseService<RemoteMeasure, RemoteMeasureDTO> {
 
-   /**
-    * 批量删除
-    *
-    * @param ids :
-    * @return :
-    */
+    /**
+     * 批量删除
+     *
+     * @param ids :
+     * @return :
+     */
     int batchDelete(List<String> ids);
 
     /**
      * 分页查询
+     *
      * @param record
      * @param pageNum
      * @param pageSize
@@ -35,6 +36,15 @@ public interface RemoteMeasureService extends IBaseService<RemoteMeasure, Remote
      */
     AbstractPageResultBean<RemoteMeasureVO> selectPageList(RemoteMeasureDTO record, int pageNum, int pageSize);
 
-    @Transactional(rollbackFor = Exception.class)
+    /**
+     * 根据点位更新结果数据
+     *
+     * @param positionNum:
+     * @param result:
+     * @return :
+     */
+    void updateResultByPositionNum(Integer positionNum, String result);
+
+
     String importListByAdd(MultipartFile file);
 }

+ 13 - 0
platform-service/src/main/java/com/platform/service/remote/impl/RemoteDegreeLogServiceImpl.java

@@ -1,5 +1,6 @@
 package com.platform.service.remote.impl;
 import com.platform.common.bean.AbstractPageResultBean;
+import com.platform.common.util.IdGeneratorUtils;
 import com.platform.dao.bean.MyPage;
 import com.github.pagehelper.PageHelper;
 import com.platform.dao.vo.query.remote.RemoteDegreeLogVO;
@@ -7,6 +8,7 @@ import com.platform.dao.dto.remote.RemoteDegreeLogDTO;
 import com.platform.dao.entity.remote.RemoteDegreeLog;
 import com.platform.dao.mapper.remote.RemoteDegreeLogMapper;
 import com.platform.service.remote.RemoteDegreeLogService;
+import org.springframework.cglib.core.Local;
 import org.springframework.stereotype.Service;
 import com.platform.service.base.impl.BaseServiceImpl;
 import org.springframework.transaction.annotation.Transactional;
@@ -14,6 +16,7 @@ import tk.mybatis.mapper.weekend.Weekend;
 import tk.mybatis.mapper.weekend.WeekendCriteria;
 import lombok.AllArgsConstructor;
 
+import java.time.LocalDateTime;
 import java.util.List;
 
 /**
@@ -41,6 +44,16 @@ public class RemoteDegreeLogServiceImpl extends BaseServiceImpl<RemoteDegreeLogM
         return new MyPage(mapper.selectList(record));
     }
 
+    @Override
+    public void addByPositionNum(Integer positionNum, String result) {
+        RemoteDegreeLog remoteDegreeLog = new RemoteDegreeLog();
+        remoteDegreeLog.setPositionNum(positionNum);
+        remoteDegreeLog.setId(IdGeneratorUtils.getObjectId());
+        remoteDegreeLog.setResult(result);
+        remoteDegreeLog.setCreatedTime(LocalDateTime.now());
+        mapper.insert(remoteDegreeLog);
+    }
+
     @Override
     public AbstractPageResultBean<RemoteDegreeLog> selectPageInfo(RemoteDegreeLogDTO record, int pageNum, int pageSize) {
         PageHelper.startPage(pageNum, pageSize);

+ 12 - 1
platform-service/src/main/java/com/platform/service/remote/impl/RemoteMeasureServiceImpl.java

@@ -54,6 +54,17 @@ public class RemoteMeasureServiceImpl extends BaseServiceImpl<RemoteMeasureMappe
         return new MyPage(mapper.selectList(record));
     }
 
+    @Override
+    public void updateResultByPositionNum(Integer positionNum, String result) {
+        Weekend<RemoteMeasure> weekend = new Weekend<>(RemoteMeasure.class);
+        WeekendCriteria<RemoteMeasure, Object> weekendCriteria = weekend.weekendCriteria();
+        weekendCriteria.andEqualTo(RemoteMeasure::getPositionNum, positionNum);
+
+        RemoteMeasure remoteMeasure = new RemoteMeasure();
+        remoteMeasure.setResult(result);
+        mapper.updateByExampleSelective(remoteMeasure,weekend);
+    }
+
     @Override
     public AbstractPageResultBean<RemoteMeasure> selectPageInfo(RemoteMeasureDTO record, int pageNum, int pageSize) {
         PageHelper.startPage(pageNum, pageSize);
@@ -80,7 +91,7 @@ public class RemoteMeasureServiceImpl extends BaseServiceImpl<RemoteMeasureMappe
                         }
                     }
                     if(!find){
-                        throw new BusinessException("点位类型未配置,请配置电度数据字典:" + remoteMeasure.getRemark() );
+                        throw new BusinessException("点位类型未配置,请配置遥测数据字典:" + remoteMeasure.getRemark() );
                     }
                 }
                 mapper.insertListforComplex(items);

+ 2 - 1
platform-service/src/main/resources/application-serviceDev.yml

@@ -1,2 +1,3 @@
 qykh:
-  plandetails: qykh_plandetails
+  plandetails: qykh_plandetails
+  product_help: qykh_product_help

+ 1 - 0
pom.xml

@@ -17,6 +17,7 @@
         <module>platform-rest</module>
         <module>platform-office</module>
         <module>platform-activiti</module>
+        <module>platform-iec</module>
     </modules>
 
     <properties>