From 5586964c3e63f95c9e460a6a3d85d7dca408e096 Mon Sep 17 00:00:00 2001
From: kaiyu <404897439@qq.com>
Date: Mon, 18 Oct 2021 14:35:39 +0800
Subject: [PATCH] Merge branch 'dev' of http://blit.7drlb.com:8888/r/moral into dev

---
 screen-job/src/main/java/com/moral/api/mapper/InformationMapper.java                |   16 +
 screen-job/src/main/java/com/moral/api/service/HistoryHourlyService.java            |   12 
 screen-job/src/main/java/com/moral/api/service/DeviceService.java                   |   11 
 screen-job/src/main/java/com/moral/api/service/GovMonitorPointService.java          |   11 
 screen-job/src/main/java/com/moral/api/service/impl/GovMonitorPointServiceImpl.java |   29 +
 screen-job/src/main/java/com/moral/api/service/CityWeatherService.java              |    9 
 screen-job/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java              |    5 
 screen-job/src/main/java/com/moral/api/entity/GovMonitorPoint.java                  |    2 
 screen-job/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java          |   10 
 screen-job/src/main/java/com/moral/api/entity/Information.java                      |   69 ++++
 screen-job/src/main/java/com/moral/api/entity/HistoryHourly.java                    |   47 +++
 screen-job/src/main/java/com/moral/api/config/mybatis/MybatisPlusConfig.java        |   28 +
 screen-job/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java    |   34 ++
 screen-job/src/main/java/com/moral/api/task/InformationTask.java                    |  269 +++++++++++++++++
 screen-job/src/main/java/com/moral/api/service/impl/HistoryAqiServiceImpl.java      |   21 +
 screen-job/src/main/java/com/moral/api/service/InformationService.java              |   27 +
 screen-job/src/main/java/com/moral/api/service/impl/CityWeatherServiceImpl.java     |   12 
 screen-job/src/main/java/com/moral/api/service/HistoryAqiService.java               |    2 
 screen-job/src/main/resources/mapper/InformationMapper.xml                          |   17 +
 screen-job/src/main/resources/mapper/OrganizationMapper.xml                         |   29 +
 screen-job/src/main/java/com/moral/api/entity/Organization.java                     |  134 ++++++++
 screen-job/src/main/java/com/moral/api/service/impl/InformationServiceImpl.java     |   31 ++
 screen-job/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java   |   39 ++
 screen-job/src/main/java/com/moral/api/service/OrganizationService.java             |   18 +
 screen-job/src/main/java/com/moral/api/mapper/OrganizationMapper.java               |   16 +
 25 files changed, 895 insertions(+), 3 deletions(-)

diff --git a/screen-job/src/main/java/com/moral/api/config/mybatis/MybatisPlusConfig.java b/screen-job/src/main/java/com/moral/api/config/mybatis/MybatisPlusConfig.java
index 3468cf7..253480b 100644
--- a/screen-job/src/main/java/com/moral/api/config/mybatis/MybatisPlusConfig.java
+++ b/screen-job/src/main/java/com/moral/api/config/mybatis/MybatisPlusConfig.java
@@ -1,11 +1,20 @@
 package com.moral.api.config.mybatis;
 
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
 import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.handler.TableNameHandler;
+import com.baomidou.mybatisplus.extension.plugins.inner.DynamicTableNameInnerInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
+import java.util.HashMap;
+
 @Configuration
 public class MybatisPlusConfig {
+
+    public static ThreadLocal<String> tableName = new ThreadLocal<>();
 
     /**
      * ������������
@@ -16,5 +25,24 @@
         return page;
     }
 
+    @Bean
+    public MybatisPlusInterceptor mybatisPlusInterceptor() {
+        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+
+        //������������
+        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+
+        // ������������SQL���������
+        DynamicTableNameInnerInterceptor dynamicTableNameInnerInterceptor = new DynamicTableNameInnerInterceptor();
+        HashMap<String, TableNameHandler> map = new HashMap<>();
+        map.put("history_hourly", (sql, tableName) -> tableName+this.tableName.get());
+        map.put("history_five_minutely", (sql, tableName) -> tableName+this.tableName.get());
+
+        dynamicTableNameInnerInterceptor.setTableNameHandlerMap(map);
+        interceptor.addInnerInterceptor(dynamicTableNameInnerInterceptor);
+
+        return interceptor;
+    }
+
 
 }
diff --git a/screen-job/src/main/java/com/moral/api/entity/GovMonitorPoint.java b/screen-job/src/main/java/com/moral/api/entity/GovMonitorPoint.java
index ed6284b..897a3a9 100644
--- a/screen-job/src/main/java/com/moral/api/entity/GovMonitorPoint.java
+++ b/screen-job/src/main/java/com/moral/api/entity/GovMonitorPoint.java
@@ -1,6 +1,7 @@
 package com.moral.api.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import com.baomidou.mybatisplus.annotation.TableId;
 import java.io.Serializable;
@@ -87,6 +88,7 @@
     /**
      * ������
      */
+    @TableField(value = "`desc`")
     private String desc;
 
 
diff --git a/screen-job/src/main/java/com/moral/api/entity/HistoryHourly.java b/screen-job/src/main/java/com/moral/api/entity/HistoryHourly.java
new file mode 100644
index 0000000..1e36dba
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/entity/HistoryHourly.java
@@ -0,0 +1,47 @@
+package com.moral.api.entity;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @ClassName HistoryHourly
+ * @Description TODO
+ * @Author ���������
+ * @Date 2021/9/14 8:53
+ * @Version TODO
+ **/
+@Data
+public class HistoryHourly extends Model<HistoryHourly> {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ������mac
+     */
+    private String mac;
+
+    /**
+     * ������
+     */
+    private Date time;
+
+    /**
+     * ������
+     */
+    private String value;
+
+    /*
+    * ���������
+    * */
+    private Integer version;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return null;
+    }
+
+}
diff --git a/screen-job/src/main/java/com/moral/api/entity/Information.java b/screen-job/src/main/java/com/moral/api/entity/Information.java
new file mode 100644
index 0000000..5909991
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/entity/Information.java
@@ -0,0 +1,69 @@
+package com.moral.api.entity;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author moral
+ * @since 2021-10-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class Information extends Model<Information> {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    private Integer id;
+
+    /**
+     * ������id
+     */
+    private Integer organizationId;
+
+    /**
+     * ������
+     */
+    private String info;
+
+    /**
+     * ������������
+     */
+    private String type;
+
+    /**
+     * ���������������1������������0���������
+     */
+    private String isRead;
+
+    /**
+     * ������������
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * ������������
+     */
+    private LocalDateTime updateTime;
+
+    /**
+     * ���������������1������������0������������
+     */
+    private String isDelete;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}
diff --git a/screen-job/src/main/java/com/moral/api/entity/Organization.java b/screen-job/src/main/java/com/moral/api/entity/Organization.java
new file mode 100644
index 0000000..1415096
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/entity/Organization.java
@@ -0,0 +1,134 @@
+package com.moral.api.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.Date;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * ���������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-10-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class Organization extends Model<Organization> {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ������
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * ���Id
+     */
+    private Integer parentId;
+
+    /**
+     * admin������Id
+     */
+    private Integer adminUserId;
+
+    /**
+     * ������������
+     */
+    private String name;
+
+    /**
+     * ������������
+     */
+    private Integer provinceCode;
+
+    /**
+     * ������������
+     */
+    private String provinceName;
+
+    /**
+     * ������������
+     */
+    private Integer cityCode;
+
+    /**
+     * ������������
+     */
+    private String cityName;
+
+    /**
+     * ���������
+     */
+    private Integer areaCode;
+
+    /**
+     * ���������
+     */
+    private String areaName;
+
+    /**
+     * ���������������������
+     */
+    private Integer locationLevelCode;
+
+    /**
+     * ������������������������
+     */
+    private String locationLevelName;
+
+    /**
+     * ������
+     */
+    private String address;
+
+    /**
+     * ���������
+     */
+    private String phone;
+
+    /**
+     * ������
+     */
+    private String email;
+
+    /**
+     * ���������
+     */
+    private String wechat;
+
+    /**
+     * ������������
+     */
+    private Date createTime;
+
+    /**
+     * ������������
+     */
+    private Date updateTime;
+
+    /**
+     * ������������
+     */
+    private Date expireTime;
+
+    /**
+     * ������������
+     */
+    private String isDelete;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}
diff --git a/screen-job/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java b/screen-job/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java
index f30a75d..fafa3e9 100644
--- a/screen-job/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java
+++ b/screen-job/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java
@@ -1,5 +1,8 @@
 package com.moral.api.mapper;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.moral.api.entity.HistoryHourly;
+
 import java.util.List;
 import java.util.Map;
 
@@ -11,7 +14,7 @@
  * @author moral
  * @since 2021-06-28
  */
-public interface HistoryHourlyMapper {
+public interface HistoryHourlyMapper extends BaseMapper<HistoryHourly> {
 
     void createTable(String timeUnits);
 
diff --git a/screen-job/src/main/java/com/moral/api/mapper/InformationMapper.java b/screen-job/src/main/java/com/moral/api/mapper/InformationMapper.java
new file mode 100644
index 0000000..b73a394
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/mapper/InformationMapper.java
@@ -0,0 +1,16 @@
+package com.moral.api.mapper;
+
+import com.moral.api.entity.Information;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper ������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-10-11
+ */
+public interface InformationMapper extends BaseMapper<Information> {
+
+}
diff --git a/screen-job/src/main/java/com/moral/api/mapper/OrganizationMapper.java b/screen-job/src/main/java/com/moral/api/mapper/OrganizationMapper.java
new file mode 100644
index 0000000..f4c72f2
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/mapper/OrganizationMapper.java
@@ -0,0 +1,16 @@
+package com.moral.api.mapper;
+
+import com.moral.api.entity.Organization;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * ��������� Mapper ������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-10-12
+ */
+public interface OrganizationMapper extends BaseMapper<Organization> {
+
+}
diff --git a/screen-job/src/main/java/com/moral/api/service/CityWeatherService.java b/screen-job/src/main/java/com/moral/api/service/CityWeatherService.java
index 46c98e8..bc57b3e 100644
--- a/screen-job/src/main/java/com/moral/api/service/CityWeatherService.java
+++ b/screen-job/src/main/java/com/moral/api/service/CityWeatherService.java
@@ -15,5 +15,14 @@
 
     //������������������������insert
     void insertCityWeather();
+    
+    /**
+      *@Description: ������city_code���time������������
+      *@Param: [cityCode, time]
+      *@return: com.moral.api.entity.CityWeather 
+      *@Author: lizijie
+      *@Date: 2021/10/14 16:52
+     **/
+    CityWeather getDataByCityCodeAndTime(String cityCode,String time);
 
 }
diff --git a/screen-job/src/main/java/com/moral/api/service/DeviceService.java b/screen-job/src/main/java/com/moral/api/service/DeviceService.java
index 90c881b..7e15c10 100644
--- a/screen-job/src/main/java/com/moral/api/service/DeviceService.java
+++ b/screen-job/src/main/java/com/moral/api/service/DeviceService.java
@@ -3,6 +3,8 @@
 import com.moral.api.entity.Device;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+
 /**
  * <p>
  * ��������� ���������
@@ -19,4 +21,13 @@
     //������������������
     void updateDeviceState(Device device);
 
+    /**
+      *@Description: ������������id������������
+      *@Param: [orgId]
+      *@return: java.util.List<com.moral.api.entity.Device> 
+      *@Author: lizijie
+      *@Date: 2021/10/14 9:54
+     **/
+    List<Device> getDateByOrgId(int orgId);
+
 }
diff --git a/screen-job/src/main/java/com/moral/api/service/GovMonitorPointService.java b/screen-job/src/main/java/com/moral/api/service/GovMonitorPointService.java
index 5d650b4..a7410df 100644
--- a/screen-job/src/main/java/com/moral/api/service/GovMonitorPointService.java
+++ b/screen-job/src/main/java/com/moral/api/service/GovMonitorPointService.java
@@ -3,6 +3,8 @@
 import com.moral.api.entity.GovMonitorPoint;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+
 /**
  * <p>
  *  ���������
@@ -13,4 +15,13 @@
  */
 public interface GovMonitorPointService extends IService<GovMonitorPoint> {
 
+    /**
+      *@Description: ������������������������������������������
+      *@Param: [code]
+      *@return: java.util.List<com.moral.api.entity.GovMonitorPoint> 
+      *@Author: lizijie
+      *@Date: 2021/10/12 14:42
+     **/
+    List<GovMonitorPoint> getGovMonitorPointByRegionCode(int code);
+
 }
diff --git a/screen-job/src/main/java/com/moral/api/service/HistoryAqiService.java b/screen-job/src/main/java/com/moral/api/service/HistoryAqiService.java
index 0e1868d..65b242f 100644
--- a/screen-job/src/main/java/com/moral/api/service/HistoryAqiService.java
+++ b/screen-job/src/main/java/com/moral/api/service/HistoryAqiService.java
@@ -8,4 +8,6 @@
     //aqi������������������������
     void insertHistoryAqi();
 
+    HistoryAqi getHistoryApiByTimeAndGuid(String guid,String time);
+
 }
diff --git a/screen-job/src/main/java/com/moral/api/service/HistoryHourlyService.java b/screen-job/src/main/java/com/moral/api/service/HistoryHourlyService.java
index 2485f04..79b3b37 100644
--- a/screen-job/src/main/java/com/moral/api/service/HistoryHourlyService.java
+++ b/screen-job/src/main/java/com/moral/api/service/HistoryHourlyService.java
@@ -1,5 +1,8 @@
 package com.moral.api.service;
 
+import com.moral.api.entity.HistoryHourly;
+
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -22,4 +25,13 @@
     //���������������������������
     List<Map<String, Object>> selectDailyData(Map<String, Object> params);
 
+    /**
+     * @Description: ������mac������������������������
+     * @Param: [mac, startDate, endDate]
+     * @return: java.util.List<com.moral.api.entity.HistoryHourly>
+     * @Author: ���������
+     * @Date: 2021/9/28
+     */
+    List<HistoryHourly> getValueByMacAndTime(String mac, Date startDate, Date endDate);
+
 }
diff --git a/screen-job/src/main/java/com/moral/api/service/InformationService.java b/screen-job/src/main/java/com/moral/api/service/InformationService.java
new file mode 100644
index 0000000..1806887
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/service/InformationService.java
@@ -0,0 +1,27 @@
+package com.moral.api.service;
+
+import com.moral.api.entity.Information;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * <p>
+ *  ���������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-10-11
+ */
+public interface InformationService extends IService<Information> {
+
+    /**
+      *@Description: ������������������
+      *@Param: [information]
+      *@return: void
+      *@Author: lizijie
+      *@Date: 2021/10/15 8:45
+     **/
+    @Transactional
+    void insert(Information information);
+
+}
diff --git a/screen-job/src/main/java/com/moral/api/service/OrganizationService.java b/screen-job/src/main/java/com/moral/api/service/OrganizationService.java
new file mode 100644
index 0000000..e92210b
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/service/OrganizationService.java
@@ -0,0 +1,18 @@
+package com.moral.api.service;
+
+import com.moral.api.entity.Organization;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * ��������� ���������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-10-12
+ */
+public interface OrganizationService extends IService<Organization> {
+
+    Organization getOrganizationById(int id);
+
+}
diff --git a/screen-job/src/main/java/com/moral/api/service/impl/CityWeatherServiceImpl.java b/screen-job/src/main/java/com/moral/api/service/impl/CityWeatherServiceImpl.java
index 2343cb5..a89dba2 100644
--- a/screen-job/src/main/java/com/moral/api/service/impl/CityWeatherServiceImpl.java
+++ b/screen-job/src/main/java/com/moral/api/service/impl/CityWeatherServiceImpl.java
@@ -64,4 +64,16 @@
             cityWeatherMapper.insert(cityWeather);
         }
     }
+
+    @Override
+    public CityWeather getDataByCityCodeAndTime(String cityCode, String time) {
+        QueryWrapper wrapper_cityWeather = new QueryWrapper();
+        wrapper_cityWeather.eq("city_code",cityCode);
+        wrapper_cityWeather.eq("time",time);
+        CityWeather cityWeather = new CityWeather();
+        if (cityWeatherMapper.selectCount(wrapper_cityWeather)==1){
+            cityWeather = cityWeatherMapper.selectOne(wrapper_cityWeather);
+        }
+        return cityWeather;
+    }
 }
diff --git a/screen-job/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java b/screen-job/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
index 704348c..b9366a4 100644
--- a/screen-job/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
+++ b/screen-job/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
@@ -15,6 +15,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -65,4 +66,13 @@
         updateWrapper.eq("id", device.getId()).set("state", device.getState());
         deviceMapper.update(null, updateWrapper);
     }
+
+    @Override
+    public List<Device> getDateByOrgId(int orgId) {
+        QueryWrapper<Device> wrapper_device = new QueryWrapper<>();
+        wrapper_device.eq("is_delete",Constants.NOT_DELETE).eq("organization_id",orgId);
+        List<Device> devices = new ArrayList<>();
+        devices = deviceMapper.selectList(wrapper_device);
+        return devices;
+    }
 }
\ No newline at end of file
diff --git a/screen-job/src/main/java/com/moral/api/service/impl/GovMonitorPointServiceImpl.java b/screen-job/src/main/java/com/moral/api/service/impl/GovMonitorPointServiceImpl.java
index 80333d0..3ac798f 100644
--- a/screen-job/src/main/java/com/moral/api/service/impl/GovMonitorPointServiceImpl.java
+++ b/screen-job/src/main/java/com/moral/api/service/impl/GovMonitorPointServiceImpl.java
@@ -1,10 +1,17 @@
 package com.moral.api.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.moral.api.entity.GovMonitorPoint;
 import com.moral.api.mapper.GovMonitorPointMapper;
 import com.moral.api.service.GovMonitorPointService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.moral.constant.Constants;
+import com.moral.util.RegionCodeUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * <p>
@@ -17,4 +24,26 @@
 @Service
 public class GovMonitorPointServiceImpl extends ServiceImpl<GovMonitorPointMapper, GovMonitorPoint> implements GovMonitorPointService {
 
+    @Autowired(required = false)
+    private GovMonitorPointMapper govMonitorPointMapper;
+
+    @Override
+    public List<GovMonitorPoint> getGovMonitorPointByRegionCode(int code) {
+        String regionName = RegionCodeUtils.regionCodeConvertToName(code);
+        QueryWrapper<GovMonitorPoint> wrapper_govMonitorPoint = new QueryWrapper<>();
+        wrapper_govMonitorPoint.eq("is_delete",Constants.NOT_DELETE);
+        switch (regionName){
+            case "province_code":wrapper_govMonitorPoint.eq("province_code",code);
+                break;
+            case "city_code":wrapper_govMonitorPoint.eq("city_code",code);
+                break;
+            case "area_code":wrapper_govMonitorPoint.eq("area_code",code);
+                break;
+            default:
+                break;
+        }
+        List<GovMonitorPoint> govMonitorPoints = new ArrayList<>();
+        govMonitorPoints = govMonitorPointMapper.selectList(wrapper_govMonitorPoint);
+        return govMonitorPoints;
+    }
 }
diff --git a/screen-job/src/main/java/com/moral/api/service/impl/HistoryAqiServiceImpl.java b/screen-job/src/main/java/com/moral/api/service/impl/HistoryAqiServiceImpl.java
index 7f337ff..5f96938 100644
--- a/screen-job/src/main/java/com/moral/api/service/impl/HistoryAqiServiceImpl.java
+++ b/screen-job/src/main/java/com/moral/api/service/impl/HistoryAqiServiceImpl.java
@@ -25,6 +25,7 @@
 import org.springframework.util.ObjectUtils;
 import org.springframework.web.client.RestTemplate;
 
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -66,21 +67,26 @@
         queryWrapper.select("guid").eq("is_delete", Constants.NOT_DELETE);
         //������������������������������������������
         List<GovMonitorPoint> govMonitorPoints = govMonitorPointService.list(queryWrapper);
+        Date time = DateUtils.dataToTimeStampTime(new Date(), DateUtils.yyyy_MM_dd_HH_EN);
+        String timeStr = DateUtils.dateToDateString(time, DateUtils.yyyy_MM_dd_HH_mm_ss_EN);
         for (GovMonitorPoint govMonitorPoint : govMonitorPoints) {
             String guid = govMonitorPoint.getGuid();
             ResponseEntity<String> response;
             try {
                 //������������������������������
-                response = restTemplate.exchange("http://chinair.market.alicloudapi.com/api/v1/air_all/station_realtime?guid={1}", HttpMethod.GET, requestEntity, String.class, guid);
+                response = restTemplate.exchange("http://chinair.market.alicloudapi.com/api/v1/air_all/station_realtime?guid={1}&pubtime={2}", HttpMethod.GET, requestEntity, String.class, guid, timeStr);
             } catch (Exception e) {
                 continue;
             }
             String body = response.getBody();
             Map<String, Object> data = JSONObject.parseObject(body, Map.class);
             Map<String, Object> map = (Map<String, Object>) data.get("data");
+            if (ObjectUtils.isEmpty(map)) {
+                continue;
+            }
             HistoryAqi historyAqi = new HistoryAqi();
             historyAqi.setGuid(guid);
-            historyAqi.setTime(DateUtils.getDate(map.get("pubtime").toString(), DateUtils.yyyy_MM_dd_HH_mm_ss_EN));
+            historyAqi.setTime(time);
             //���������������
             historyAqi.setValue(JSONObject.toJSONString(map));
             historyAqiMapper.insert(historyAqi);
@@ -120,4 +126,15 @@
             redisTemplate.opsForHash().put(RedisConstants.AQI_DATA, guid, value);
         }
     }
+
+    @Override
+    public HistoryAqi getHistoryApiByTimeAndGuid(String guid, String time) {
+        QueryWrapper<HistoryAqi> wrapper_historyAqi = new QueryWrapper<>();
+        wrapper_historyAqi.eq("guid",guid).eq("time",time);
+        HistoryAqi historyAqi = new HistoryAqi();
+        if (historyAqiMapper.selectCount(wrapper_historyAqi)==1){
+            historyAqi = historyAqiMapper.selectOne(wrapper_historyAqi);
+        }
+        return historyAqi;
+    }
 }
diff --git a/screen-job/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java b/screen-job/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java
index caa9bb8..7fe292a 100644
--- a/screen-job/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java
+++ b/screen-job/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java
@@ -2,6 +2,8 @@
 
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.moral.api.config.mybatis.MybatisPlusConfig;
+import com.moral.api.entity.HistoryHourly;
 import com.moral.api.entity.Sensor;
 import com.moral.api.mapper.HistoryHourlyMapper;
 import com.moral.api.mapper.HistoryMinutelyMapper;
@@ -9,9 +11,11 @@
 import com.moral.api.service.SensorService;
 import com.moral.constant.Constants;
 import com.moral.constant.RedisConstants;
+import com.moral.constant.SeparateTableType;
 import com.moral.util.AmendUtils;
 import com.moral.util.DateUtils;
 
+import com.moral.util.MybatisPLUSUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
@@ -223,4 +227,39 @@
     public List<Map<String, Object>> selectDailyData(Map<String, Object> params) {
         return historyHourlyMapper.selectDailyData(params);
     }
+
+    /**
+     * @Description: ���������������������������mac���������
+     * @Param: [mac, startDate, endDate]
+     * @return: java.util.List<com.moral.api.entity.HistoryHourly>
+     * @Author: ���������
+     * @Date: 2021/9/23
+     */
+    @Override
+    public List<HistoryHourly> getValueByMacAndTime(String mac, Date startDate, Date endDate){
+        QueryWrapper<HistoryHourly> wrapper = new QueryWrapper<>();
+        wrapper.eq("mac",mac);
+        wrapper.between("time",startDate,endDate);
+        List<String> tableNames = MybatisPLUSUtils.getTableNamesByWrapper(startDate, endDate, SeparateTableType.MONTH);
+        List<HistoryHourly> datas = multiTableQuery(wrapper, tableNames);
+        return datas;
+    }
+
+    /**
+     * @Description: ������������������������������������������������wrapper���������������
+     * @Param: [wrapper, tableNames]
+     * @return: java.util.List<com.moral.api.entity.HistoryHourly>
+     * @Author: ���������
+     * @Date: 2021/9/23
+     */
+    private List<HistoryHourly> multiTableQuery(QueryWrapper<HistoryHourly> wrapper,List<String> tableNames){
+        List<HistoryHourly> result = new ArrayList<>();
+        for (String tableName : tableNames) {
+            MybatisPlusConfig.tableName.set(tableName);
+            List<HistoryHourly> datas = historyHourlyMapper.selectList(wrapper);
+            result.addAll(datas);
+        }
+        MybatisPlusConfig.tableName.remove();
+        return result;
+    }
 }
diff --git a/screen-job/src/main/java/com/moral/api/service/impl/InformationServiceImpl.java b/screen-job/src/main/java/com/moral/api/service/impl/InformationServiceImpl.java
new file mode 100644
index 0000000..61fd35a
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/service/impl/InformationServiceImpl.java
@@ -0,0 +1,31 @@
+package com.moral.api.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.moral.api.entity.Information;
+import com.moral.api.mapper.InformationMapper;
+import com.moral.api.service.InformationService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * <p>
+ *  ���������������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-10-11
+ */
+@Service
+public class InformationServiceImpl extends ServiceImpl<InformationMapper, Information> implements InformationService {
+
+    @Autowired(required = false)
+    private InformationMapper informationMapper;
+
+    @Override
+    @Transactional
+    public void insert(Information information) {
+        informationMapper.insert(information);
+    }
+}
diff --git a/screen-job/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java b/screen-job/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java
new file mode 100644
index 0000000..c4ffa83
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java
@@ -0,0 +1,34 @@
+package com.moral.api.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.moral.api.entity.Organization;
+import com.moral.api.mapper.OrganizationMapper;
+import com.moral.api.service.OrganizationService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.moral.constant.Constants;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * ��������� ���������������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-10-12
+ */
+@Service
+public class OrganizationServiceImpl extends ServiceImpl<OrganizationMapper, Organization> implements OrganizationService {
+
+    @Autowired(required = false)
+    private OrganizationMapper organizationMapper;
+
+    @Override
+    public Organization getOrganizationById(int id) {
+        QueryWrapper<Organization> wrapper_organization = new QueryWrapper<>();
+        wrapper_organization.eq("is_delete",Constants.NOT_DELETE);
+        wrapper_organization.eq("id",id);
+        Organization organization = organizationMapper.selectOne(wrapper_organization);
+        return organization;
+    }
+}
diff --git a/screen-job/src/main/java/com/moral/api/task/InformationTask.java b/screen-job/src/main/java/com/moral/api/task/InformationTask.java
new file mode 100644
index 0000000..d4d931a
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/task/InformationTask.java
@@ -0,0 +1,269 @@
+package com.moral.api.task;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.moral.api.entity.*;
+import com.moral.api.service.*;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobHelper;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * @program: screen
+ * @description: ������������������������������
+ * @author: lizijie
+ * @create: 2021-10-12 08:53
+ **/
+@Component
+public class InformationTask {
+
+    @Autowired
+    private OrganizationService organizationService;
+
+    @Autowired
+    private GovMonitorPointService govMonitorPointService;
+
+    @Autowired
+    private HistoryAqiService historyAqiService;
+
+    @Autowired
+    private DeviceService deviceService;
+
+    @Autowired
+    private HistoryHourlyService historyHourlyService;
+
+    @Autowired
+    private CityWeatherService cityWeatherService;
+
+    @Autowired
+    private InformationService informationService;
+
+    @XxlJob("informationInsert")
+    public ReturnT informationInsert(){
+        String params = XxlJobHelper.getJobParam();
+        Map organizationIdMap = JSON.parseObject(params);
+        List<Integer> orgIdList = (List<Integer>) organizationIdMap.get("orgId");
+        Calendar nowCalendar = Calendar.getInstance();
+        Calendar beforeCalendar = Calendar.getInstance();
+        /* HOUR_OF_DAY ������������������������ */
+        nowCalendar.set(Calendar.HOUR_OF_DAY, nowCalendar.get(Calendar.HOUR_OF_DAY) - 1);
+        beforeCalendar.set(Calendar.HOUR_OF_DAY, beforeCalendar.get(Calendar.HOUR_OF_DAY) - 2);
+        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH");
+        String nowTime = df.format(nowCalendar.getTime())+":00:00";
+        String beforeTime = df.format(beforeCalendar.getTime())+":00:00";
+        String realTime = df.format(new Date())+":00:00";
+        for (Integer orgId:orgIdList) {
+            if (!ObjectUtils.isEmpty(organizationService.getOrganizationById(orgId))){
+                Organization organization = organizationService.getOrganizationById(orgId);
+                Integer locationLevelCode = organization.getLocationLevelCode();
+                List<GovMonitorPoint> govMonitorPoints = govMonitorPointService.getGovMonitorPointByRegionCode(locationLevelCode);
+                Double PM2_5AvgBefore = null;
+                Double PM10AvgBefore = null;
+                Double O3AvgBefore = null;
+                Double PM2_5AvgNow = null;
+                Double PM10AvgNow = null;
+                Double O3AvgNow = null;
+                Double AQIAvgNow = null;
+                Double TVOCAvgNow = null;
+                Double TVOCAvgBefore = null;
+                if (govMonitorPoints.size()>0){
+                    List<Double> PM2_5ListBefore = new ArrayList<>();
+                    List<Double> PM10ListBefore = new ArrayList<>();
+                    List<Double> O3ListBefore = new ArrayList<>();
+                    List<Double> PM2_5ListNow = new ArrayList<>();
+                    List<Double> PM10ListNow = new ArrayList<>();
+                    List<Double> O3ListNow = new ArrayList<>();
+                    List<Double> AQIListNow = new ArrayList<>();
+                    for (GovMonitorPoint govMonitorPoint:govMonitorPoints) {
+                        String guid = govMonitorPoint.getGuid();
+                        HistoryAqi beforeHistoryAqi = new HistoryAqi();
+                        beforeHistoryAqi = historyAqiService.getHistoryApiByTimeAndGuid(guid,beforeTime);
+                        if (!ObjectUtils.isEmpty(beforeHistoryAqi)){
+                            String value = beforeHistoryAqi.getValue();
+                            if (!ObjectUtils.isEmpty(value)){
+                                JSONObject jsonObject = new JSONObject();
+                                jsonObject = JSONObject.parseObject(value);
+                                if (!ObjectUtils.isEmpty(jsonObject.get("pm2_5"))){
+                                    PM2_5ListBefore.add(Double.parseDouble(jsonObject.get("pm2_5").toString()));
+                                }
+                                if (!ObjectUtils.isEmpty(jsonObject.get("pm10"))){
+                                    PM10ListBefore.add(Double.parseDouble(jsonObject.get("pm10").toString()));
+                                }
+                                if (!ObjectUtils.isEmpty(jsonObject.get("o3"))){
+                                    O3ListBefore.add(Double.parseDouble(jsonObject.get("o3").toString()));
+                                }
+                            }
+                        }
+                        HistoryAqi nowHistoryAqi = new HistoryAqi();
+                        nowHistoryAqi = historyAqiService.getHistoryApiByTimeAndGuid(guid,nowTime);
+                        if (!ObjectUtils.isEmpty(nowHistoryAqi)){
+                            String value = nowHistoryAqi.getValue();
+                            if (!ObjectUtils.isEmpty(value)){
+                                JSONObject jsonObject = JSONObject.parseObject(value);
+                                if (!ObjectUtils.isEmpty(jsonObject.get("pm2_5"))){
+                                    PM2_5ListNow.add(Double.parseDouble(jsonObject.get("pm2_5").toString()));
+                                }
+                                if (!ObjectUtils.isEmpty(jsonObject.get("pm10"))){
+                                    PM10ListNow.add(Double.parseDouble(jsonObject.get("pm10").toString()));
+                                }
+                                if (!ObjectUtils.isEmpty(jsonObject.get("o3"))){
+                                    O3ListNow.add(Double.parseDouble(jsonObject.get("o3").toString()));
+                                }
+                                if (!ObjectUtils.isEmpty(jsonObject.get("aqi"))){
+                                    AQIListNow.add(Double.parseDouble(jsonObject.get("aqi").toString()));
+                                }
+                            }
+                        }
+                    }
+                    if (PM2_5ListBefore.size()>0){
+                        PM2_5AvgBefore = (double)Math.round(PM2_5ListBefore.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage());
+                    }
+                    if (PM10ListBefore.size()>0){
+                        PM10AvgBefore = (double)Math.round(PM10ListBefore.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage());
+                    }
+                    if (O3ListBefore.size()>0){
+                        O3AvgBefore = (double)Math.round(O3ListBefore.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage());
+                    }
+                    if (PM2_5ListNow.size()>0){
+                        PM2_5AvgNow = (double)Math.round(PM2_5ListNow.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage());
+                    }
+                    if (PM10ListNow.size()>0){
+                        PM10AvgNow = (double)Math.round(PM10ListNow.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage());
+                    }
+                    if (O3ListNow.size()>0){
+                        O3AvgNow = (double)Math.round(O3ListNow.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage());
+                    }
+                    if (AQIListNow.size()>0){
+                        AQIAvgNow = (double)Math.round(AQIListNow.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage());
+                    }
+                    List<Device> devices = new ArrayList<>();
+                    devices = deviceService.getDateByOrgId(orgId);
+                    List<Double> TVOCListNow = new ArrayList<>();
+                    List<Double> TVOCListBefore = new ArrayList<>();
+                    SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                    try {
+                        for (Device device:devices) {
+                            String mac = device.getMac();
+                            List<HistoryHourly> historyHourliesNow = new ArrayList<>();
+                            historyHourliesNow = historyHourlyService.getValueByMacAndTime(mac, df1.parse(nowTime), df1.parse(df.format(nowCalendar.getTime()) + ":00:01"));
+                            if (!ObjectUtils.isEmpty(historyHourliesNow) && historyHourliesNow.size()>0){
+                                String value = historyHourliesNow.get(0).getValue();
+                                JSONObject jsonObject = JSONObject.parseObject(value);
+                                TVOCListNow.add(Double.parseDouble(jsonObject.get("a99054").toString()));
+                            }
+                            List<HistoryHourly> historyHourliesBefore = new ArrayList<>();
+                            historyHourliesBefore = historyHourlyService.getValueByMacAndTime("p5dnd7a0392252", df1.parse(beforeTime), df1.parse(df.format(beforeCalendar.getTime()) + ":00:01"));
+                            if (!ObjectUtils.isEmpty(historyHourliesBefore) && historyHourliesBefore.size()>0){
+                                String value = historyHourliesBefore.get(0).getValue();
+                                JSONObject jsonObject = JSONObject.parseObject(value);
+                                TVOCListBefore.add(Double.parseDouble(jsonObject.get("a99054").toString()));
+                            }
+                        }
+                    }catch (ParseException e){
+                        e.printStackTrace();
+                    }
+                    if (TVOCListNow.size()>0){
+                        TVOCAvgNow = (double)Math.round(TVOCListNow.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage());
+                    }
+                    if (TVOCListBefore.size()>0){
+                        TVOCAvgBefore = (double)Math.round(TVOCListBefore.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage());
+                    }
+                }
+                String temp = "";
+                String humidity = "";
+                String windDir = "";
+                String windScale = "";
+                CityWeather cityWeather = new CityWeather();
+                cityWeather = cityWeatherService.getDataByCityCodeAndTime(locationLevelCode.toString(),nowTime);
+                if (!ObjectUtils.isEmpty(cityWeather)){
+                    String value = cityWeather.getValue();
+                    if (!ObjectUtils.isEmpty(value)){
+                        JSONObject jsonObject = JSONObject.parseObject(value);
+                        if (!ObjectUtils.isEmpty(jsonObject.get("temp"))){
+                            temp = jsonObject.getString("temp");
+                        }
+                        if (!ObjectUtils.isEmpty(jsonObject.get("humidity"))){
+                            humidity = jsonObject.getString("humidity");
+                        }
+                        if (!ObjectUtils.isEmpty(jsonObject.get("windDir"))){
+                            windDir = jsonObject.getString("windDir");
+                        }
+                        if (!ObjectUtils.isEmpty(jsonObject.get("windScale "))){
+                            windScale = jsonObject.getString("windScale");
+                        }
+                    }
+                }
+                Information information = new Information();
+                JSONObject jsonObject = new JSONObject();
+                String realHour = realTime.substring(11,13);
+                String nowHour = nowTime.substring(11,13);
+                String beforeHour = beforeTime.substring(11,13);
+                String title = "���"+realHour+"������������������";
+                String airInfo = nowHour+"������";
+                String AQILevel = "";
+                if (!ObjectUtils.isEmpty(AQIAvgNow)){
+                    airInfo = airInfo + "������AQI���"+AQIAvgNow+"������������";
+                    if (AQIAvgNow<50 || AQIAvgNow==50){
+                        AQILevel = "���";
+                    }else if (AQIAvgNow<100 || AQIAvgNow==100){
+                        AQILevel = "������";
+                    }else if (AQIAvgNow<200 || AQIAvgNow==200){
+                        AQILevel = "������������";
+                    }else if (AQIAvgNow<300 || AQIAvgNow==300){
+                        AQILevel = "������������";
+                    }else{
+                        AQILevel = "������������";
+                    }
+                }else {
+                    airInfo = airInfo + "������AQI���"+"������������";
+                }
+                airInfo = airInfo+AQILevel+"���";
+                String PM10Info = "";
+                PM10Info = PM10Info+"PM10���"+PM10AvgNow+"������/������������";
+                if (!ObjectUtils.isEmpty(PM10AvgBefore) && !ObjectUtils.isEmpty(PM10AvgNow)){
+                    String upOrDown = (PM10AvgBefore<PM10AvgNow)?"������":"������";
+                    PM10Info = PM10Info + upOrDown+Math.abs(PM10AvgNow-PM10AvgBefore)+"���";
+                }
+                String PM2_5Info = "";
+                PM2_5Info = PM2_5Info+"PM10���"+PM2_5AvgNow+"������/������������";
+                if (!ObjectUtils.isEmpty(PM2_5AvgBefore) && !ObjectUtils.isEmpty(PM2_5AvgNow)){
+                    String upOrDown = (PM2_5AvgBefore<PM2_5AvgNow)?"������":"������";
+                    PM2_5Info = PM2_5Info + upOrDown+Math.abs(PM2_5AvgNow-PM2_5AvgBefore)+"���";
+                }
+                String O3Info = "";
+                O3Info = O3Info+"O3���"+O3AvgNow+"������/������������";
+                if (!ObjectUtils.isEmpty(O3AvgBefore) && !ObjectUtils.isEmpty(O3AvgNow)){
+                    String upOrDown = (O3AvgBefore<PM10AvgNow)?"������":"������";
+                    O3Info = O3Info + upOrDown+Math.abs(O3AvgNow-O3AvgBefore)+"���";
+                }
+                String TVOCInfo = "";
+                TVOCInfo = TVOCInfo+"TVOC���������"+TVOCAvgNow+"������/������������";
+                String cityWeatherInfo = "";
+                cityWeatherInfo = cityWeatherInfo + "���������������������������"+temp+"������������"+humidity+"%,"+windDir+windScale+"������";
+                airInfo = airInfo+"���"+beforeHour+"���������"+PM10Info+PM2_5Info+O3Info+TVOCInfo;
+                airInfo = airInfo.replace("null","");
+                cityWeatherInfo = cityWeatherInfo.replace("null","");
+                List info = new ArrayList();
+                info.add(airInfo);
+                info.add(cityWeatherInfo);
+                String author = "���������������������������";
+                jsonObject.put("title",title);
+                jsonObject.put("info",info);
+                jsonObject.put("author",author);
+
+                information.setInfo(jsonObject.toString());
+                information.setOrganizationId(orgId);
+                information.setType("0");
+                informationService.insert(information);
+            }
+        }
+        return ReturnT.SUCCESS;
+    }
+}
diff --git a/screen-job/src/main/resources/mapper/InformationMapper.xml b/screen-job/src/main/resources/mapper/InformationMapper.xml
new file mode 100644
index 0000000..6c19e80
--- /dev/null
+++ b/screen-job/src/main/resources/mapper/InformationMapper.xml
@@ -0,0 +1,17 @@
+<?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.moral.api.mapper.InformationMapper">
+
+        <!-- ������������������������ -->
+        <resultMap id="BaseResultMap" type="com.moral.api.entity.Information">
+                    <id column="id" property="id" />
+                    <result column="organization_id" property="organizationId" />
+                    <result column="info" property="info" />
+                    <result column="type" property="type" />
+                    <result column="is_read" property="isRead" />
+                    <result column="create_time" property="createTime" />
+                    <result column="update_time" property="updateTime" />
+                    <result column="is_delete" property="isDelete" />
+        </resultMap>
+
+</mapper>
\ No newline at end of file
diff --git a/screen-job/src/main/resources/mapper/OrganizationMapper.xml b/screen-job/src/main/resources/mapper/OrganizationMapper.xml
new file mode 100644
index 0000000..7dca616
--- /dev/null
+++ b/screen-job/src/main/resources/mapper/OrganizationMapper.xml
@@ -0,0 +1,29 @@
+<?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.moral.api.mapper.OrganizationMapper">
+
+        <!-- ������������������������ -->
+        <resultMap id="BaseResultMap" type="com.moral.api.entity.Organization">
+                    <id column="id" property="id" />
+                    <result column="parent_id" property="parentId" />
+                    <result column="admin_user_id" property="adminUserId" />
+                    <result column="name" property="name" />
+                    <result column="province_code" property="provinceCode" />
+                    <result column="province_name" property="provinceName" />
+                    <result column="city_code" property="cityCode" />
+                    <result column="city_name" property="cityName" />
+                    <result column="area_code" property="areaCode" />
+                    <result column="area_name" property="areaName" />
+                    <result column="location_level_code" property="locationLevelCode" />
+                    <result column="location_level_name" property="locationLevelName" />
+                    <result column="address" property="address" />
+                    <result column="phone" property="phone" />
+                    <result column="email" property="email" />
+                    <result column="wechat" property="wechat" />
+                    <result column="create_time" property="createTime" />
+                    <result column="update_time" property="updateTime" />
+                    <result column="expire_time" property="expireTime" />
+                    <result column="is_delete" property="isDelete" />
+        </resultMap>
+
+</mapper>
\ No newline at end of file

--
Gitblit v1.8.0