Jelajahi Sumber

先从mysql查询到deviceId再查询数据

wangli 4 tahun lalu
induk
melakukan
5049fb964d

+ 54 - 1
meter-reading-tongzi/ReadMeterMongodb/pom.xml

@@ -34,12 +34,65 @@
             <artifactId>spring-boot-starter-test</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-jdbc</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.mybatis.spring.boot</groupId>
+            <artifactId>mybatis-spring-boot-starter</artifactId>
+            <version>2.1.3</version>
+        </dependency>
+        <!-- MySQL -->
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <scope>runtime</scope>
+        </dependency>
 
         <!-- mongo db-->
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-data-mongodb</artifactId>
         </dependency>
+        <!-- redis -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-redis</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>redis.clients</groupId>
+            <artifactId>jedis</artifactId>
+        </dependency>
+        <!--Druid-->
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>druid</artifactId>
+            <version>0.2.9</version>
+        </dependency>
+
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-jpa</artifactId>
+        </dependency>
+        <!-- tomcatd的jsp支持 -->
+        <dependency>
+            <groupId>org.apache.tomcat.embed</groupId>
+            <artifactId>tomcat-embed-jasper</artifactId>
+        </dependency>
+        <!-- servlet容器 -->
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>javax.servlet-api</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>jstl</artifactId>
+        </dependency>
+
     </dependencies>
 
     <build>
@@ -52,6 +105,6 @@
                 </configuration>
             </plugin>
         </plugins>
-   </build>
+    </build>
 
 </project>

+ 2 - 1
meter-reading-tongzi/ReadMeterMongodb/src/main/java/com/example/demo/DemoApplication.java

@@ -1,10 +1,11 @@
 package com.example.demo;
 
+import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 
 
-
+@MapperScan("com.example.demo.dao")
 @SpringBootApplication
 public class DemoApplication {
 

+ 11 - 0
meter-reading-tongzi/ReadMeterMongodb/src/main/java/com/example/demo/dao/SiteDao.java

@@ -0,0 +1,11 @@
+package com.example.demo.dao;
+
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface SiteDao {
+
+    List<Long> findDeviceIds(List<String> list);
+}

+ 33 - 16
meter-reading-tongzi/ReadMeterMongodb/src/main/java/com/example/demo/service/SiteService.java

@@ -1,5 +1,6 @@
 package com.example.demo.service;
 
+import com.example.demo.dao.SiteDao;
 import com.example.demo.entity.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -21,7 +22,10 @@ import java.util.List;
 public class SiteService {
 
     @Autowired
-    MongoTemplate mongoTemplate;
+    private MongoTemplate mongoTemplate;
+
+    @Autowired
+    private SiteDao siteDao;
 
     @Value("${Account.username}")
     private String username;    //账号
@@ -38,7 +42,12 @@ public class SiteService {
         }
 
         if(requestReadingMeterDto.getMeterCode() != null && requestReadingMeterDto.getMeterCode() .size()>0){
-            List<MeterInfoDto> meterInfos = this.queryMeterInfoList(requestReadingMeterDto.getMeterCode());
+
+            List<Long> deviceIds = siteDao.findDeviceIds(requestReadingMeterDto.getMeterCode());
+            if(deviceIds == null || deviceIds.size()==0){
+                return new ResponseMsg( false,"未查询到有效数据",new ResultDto());
+            }
+            List<MeterInfoDto> meterInfos = this.queryMeterInfoList(deviceIds);
             if(meterInfos.size()>0){
                 return new ResponseMsg( true,"成功",new ResultDto(meterInfos));
             }else{
@@ -76,7 +85,11 @@ public class SiteService {
                 return new ResponseMsg(false, "查询表数请限制在1000个以内", new ResultDto());
             }
             //查询数据
-            List<MeterReadDto> meterReads = this.queryReadInfoList(meterCodes,readDate);
+            List<Long> deviceIds = siteDao.findDeviceIds(meterCodes);
+            if(deviceIds == null || deviceIds.size()==0){
+                return new ResponseMsg( false,"未查询到有效数据",new ResultDto());
+            }
+            List<MeterReadDto> meterReads = this.queryReadInfoList(deviceIds,readDate);
 
             if (meterCodes != null && meterCodes.size() > 0 && meterReads.size() != meterCodes.size()) {
                 //遍历未查询到表的编码
@@ -91,12 +104,16 @@ public class SiteService {
                 c.add(Calendar.DAY_OF_MONTH, -1);
                 Integer yesterday = Integer.valueOf(formatter.format(requestReadingMeterDto.getReadingTime()));
                 //查询前一天的数据
-                List<MeterReadDto> meterRead2 = this.queryReadInfoList(meterCodes,yesterday);
-                //遍历未查询到表的编码
-                for (MeterReadDto meterReadDto : meterRead2) {
-                    meterCodes.remove(meterReadDto.getMeterCode());//移除已经查询到的表号
+                List<Long> deviceIds2 = siteDao.findDeviceIds(meterCodes);
+                if(deviceIds == null || deviceIds.size()==0){
+                    List<MeterReadDto> meterRead2 = this.queryReadInfoList(deviceIds2,yesterday);
+                    for (MeterReadDto meterReadDto : meterRead2) {
+                        meterCodes.remove(meterReadDto.getMeterCode());//移除已经查询到的表号
+                    }
+                    meterReads.addAll(meterRead2);//合并两次查询的数据
+
                 }
-                meterReads.addAll(meterRead2);//合并两次查询的数据
+                //遍历未查询到表的编码
 
                 //未查询到的数据标记异常
                 for (String meterCode : meterCodes) {
@@ -119,13 +136,13 @@ public class SiteService {
         }
     }
 
-    public List<MeterReadDto> queryReadInfoList(List<String> meterCodes, Integer readDate){
+    public List<MeterReadDto> queryReadInfoList(List<Long> deviceIds, Integer readDate){
         Query query = new Query();
-        if(meterCodes != null && meterCodes.size()>0){
-            query.addCriteria(Criteria.where("meterNo").in(meterCodes)) ;
+        if(deviceIds != null && deviceIds.size()>0){
+            query.addCriteria(Criteria.where("deviceId").in(deviceIds)) ;
         }
         query.addCriteria(Criteria.where("readData").ne(null));
-        query.addCriteria(Criteria.where("customerId").is(3));
+        query.addCriteria(Criteria.where("customerId").is(2));
         query.addCriteria(Criteria.where("status").is(1));
         query.addCriteria(Criteria.where("readDate").is(readDate));
         query.fields().include("meterNo");
@@ -137,13 +154,13 @@ public class SiteService {
         return list;
     }
 
-    public List<MeterInfoDto> queryMeterInfoList(List<String> meterCodes) {
+    public List<MeterInfoDto> queryMeterInfoList(List<Long> deviceIds) {
 
         Criteria criteria = Criteria.where("readData").ne(null)
-                .and("customerId").is(3)
+                .and("customerId").is(2)
                 .and("status").is(1);
-        if(meterCodes != null && meterCodes.size()>0){
-            criteria.and("meterNo").in(meterCodes);
+        if(deviceIds != null && deviceIds.size()>0){
+            criteria.and("deviceId").in(deviceIds);
         }
 
         Aggregation agg = Aggregation.newAggregation(

+ 42 - 1
meter-reading-tongzi/ReadMeterMongodb/src/main/resources/application.yml

@@ -6,13 +6,54 @@ Account:
   password: 123456
 
 spring:
+  datasource:
+    url: jdbc:mysql://114.135.61.188:33306/smart_city_sit_6_10?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
+    username: root
+    password: 100Zone@123
+    #    username: root
+    #    password: root
+    #    url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    #数据库方式
+    job-store-type: jdbc
   data:
     mongodb:
       uri: mongodb://114.135.61.188:17017/water-iot-database
+  jpa:
+    database: mysql
+    show-sql: true
+  #    generate-ddl: true
+  #    hibernate:
+  #      ddl-auto: update
+  #  redis:
+  #    host: 127.0.0.1
+  #    port: 6379
+  #    database: 0
+  #    password:
+  #    timeout: 100
+  #    jedis:
+  #      pool:
+  #        max-active: 8
+  #        max-wait: -1
+  #        max-idle: 8
+  #        min-idle: 0
+  mvc:
+    view:
+      prefix: /WEB-INF/jsp/
+      suffix: .jsp
   jackson:
     date-format: yyyy-MM-dd HH:mm:ss
+
+mybatis:
+  mapper-locations: classpath:mapper/*Mapper.xml
+  type-aliases-package: com.example.entity
+  configuration:
+    map-underscore-to-camel-case: true
+
 #showSql
 logging:
   level:
+    com.example.demo.dao: debug
     org.springframework.data.mongodb.core: DEBUG
-
+  file:
+    path: E:\\a

+ 13 - 0
meter-reading-tongzi/ReadMeterMongodb/src/main/resources/mapper/SiteMapper.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.example.demo.dao.SiteDao">
+
+    <select id="findDeviceIds" resultType="java.lang.Long">
+        select id from sc_device where device_status = 1 and customer_id =2 and status = 1 and  water_meter_no in
+        <foreach collection="list" item="listItem" open="(" close=")" separator=",">
+            <if test="listItem != null and listItem != ''">
+                #{listItem}
+            </if>
+        </foreach>
+    </select>
+</mapper>

+ 12 - 0
meter-reading-tongzi/ReadMeterMongodb/src/main/webapp/WEB-INF/jsp/index.jsp

@@ -0,0 +1,12 @@
+<%@ page language="java" contentType="text/html; charset=UTF-8"
+         pageEncoding="UTF-8"%>
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <title>Insert title here</title>
+</head>
+<body>
+aaaa
+</body>
+</html>