zhanghua
2023-11-12 5e67c5cac614907b32c059c1c059007ac1062ff1
实时数据
3个文件已修改
10个文件已添加
557 ■■■■■ 已修改文件
ycl-platform/src/main/java/com/ycl/controller/smoke/OdsStatisticsController.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/entity/smoke/OdsLocaleDocument.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/mapper/smoke/OdsLocaleDocumentMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/service/smoke/IOdsLocaleDocumentService.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/service/smoke/impl/OdsLocaleDocumentServiceImpl.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/resources/mapper/smoke/OdsLocaleDocumentMapper.xml 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-smoke/src/main/java/com/ycl/smoke/entity/OdsLocaleDocument.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-smoke/src/main/java/com/ycl/smoke/mapper/OdsLocaleDocumentMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-smoke/src/main/java/com/ycl/smoke/service/IOdsLocaleDocumentService.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-smoke/src/main/java/com/ycl/smoke/service/impl/OdsLocaleDocumentServiceImpl.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-smoke/src/main/java/com/ycl/smoke/task/ScheduledTask.java 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-smoke/src/main/java/com/ycl/smoke/utils/HttpUtil.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-smoke/src/main/resources/mapper/smoke/OdsLocaleDocumentMapper.xml 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/controller/smoke/OdsStatisticsController.java
@@ -1,6 +1,8 @@
package com.ycl.controller.smoke;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ycl.annotation.LogSave;
import com.ycl.api.CommonPage;
@@ -8,14 +10,17 @@
import com.ycl.controller.BaseController;
import com.ycl.entity.smoke.OdsCurAlarm;
import com.ycl.entity.smoke.OdsCustomer;
import com.ycl.entity.smoke.OdsLocaleDocument;
import com.ycl.entity.smoke.OdsStatistics;
import com.ycl.service.smoke.IOdsCurAlarmService;
import com.ycl.service.smoke.IOdsLocaleDocumentService;
import com.ycl.service.smoke.IOdsStatisticsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.lang.reflect.Field;
import java.util.List;
@RestController
@@ -26,6 +31,8 @@
    IOdsStatisticsService odsStatisticsService;
    IOdsCurAlarmService curAlarmService;
    IOdsLocaleDocumentService documentService;
    @Autowired
    public void setOdsStatisticsService(IOdsStatisticsService odsStatisticsService) {
        this.odsStatisticsService = odsStatisticsService;
@@ -34,6 +41,11 @@
    @Autowired
    public void setCurAlarmService(IOdsCurAlarmService curAlarmService) {
        this.curAlarmService = curAlarmService;
    }
    @Autowired
    public void setDocumentService(IOdsLocaleDocumentService documentService) {
        this.documentService = documentService;
    }
    @ApiOperation("检测仪总体情况报表")
@@ -60,7 +72,38 @@
    @ResponseBody
    @LogSave(operationType = "油烟模块", contain = "监测报警统计&运维情况报表")
    public CommonResult<List<OdsCurAlarm>> findCurAlarm() {
        List<OdsCurAlarm> list = curAlarmService.list();
        LambdaQueryWrapper<OdsCurAlarm> queryWrapper = new LambdaQueryWrapper<OdsCurAlarm>().orderByDesc(OdsCurAlarm::getId);
        List<OdsCurAlarm> list = curAlarmService.list(queryWrapper);
        return CommonResult.success(list);
    }
    @ApiOperation("检测仪总体情况报表---档案")
    @RequestMapping(value = "/statistics/detectorDailyStats/document", method = RequestMethod.GET)
    @ResponseBody
    @LogSave(operationType = "油烟模块", contain = "监测报警统计&运维情况报表")
    public CommonResult<String> getDetectorDailyStatsDocument(@RequestParam(value = "field", required = false) String field,
                                                              @RequestParam(value = "mn", required = false) String mn) {
        OdsLocaleDocument odsLocaleDocument = documentService.getByLocaleId(mn);
        String value = getFieldValueByFieldName(field, odsLocaleDocument);
        return CommonResult.success(value);
    }
    /**
     * 根据属性名获取属性值
     *
     * @param fieldName
     * @param object
     * @return
     */
    private String getFieldValueByFieldName(String fieldName, Object object) {
        try {
            Field field = object.getClass().getDeclaredField(fieldName);
            //设置对象的访问权限,保证对private的属性的访问
            field.setAccessible(true);
            return  (String)field.get(object);
        } catch (Exception e) {
            return null;
        }
    }
}
ycl-platform/src/main/java/com/ycl/entity/smoke/OdsLocaleDocument.java
New file
@@ -0,0 +1,91 @@
package com.ycl.entity.smoke;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
 * <p>
 * 监测点信息
 * </p>
 *
 * @author lyq
 * @since 2023-02-28
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("ums_ods_locale_document")
@Builder
public class OdsLocaleDocument implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * Id
     */
    @TableId("id")
    @JsonProperty("Id")
    private Integer id;
    @TableField("mn")
    private String mn;
    @TableField("localeId")
    private String localeId;
    /**
     * 数据检测器每日总和天数
     */
    @TableField("detector_daily_sum_days")
    private String detectorDailySumDays;
    /**
     * '餐饮企业健康情况展示'
     */
    @TableField("list_locale")
    private String listLocale;
    /**
     * '每日查询数据检测器'
     */
    @TableField("detector_daily")
    private String detectorDaily;
    /**
     * '分钟采集数据'
     */
    @TableField("intime_data")
    private String intimeData;
    /**
     * '10min浓度曲线'
     */
    @TableField("ten_min_data")
    private String tenMinData;
    /**
     * '小时折算浓度
     */
    @TableField("ten_hour_data")
    private String tenHourData;
    /**
     * '设备信息'
     */
    @TableField("devices")
    private String devices;
    /**
     * 监测点运维情况
     */
    @TableField("maintenance")
    private String maintenance;
}
ycl-platform/src/main/java/com/ycl/mapper/smoke/OdsLocaleDocumentMapper.java
New file
@@ -0,0 +1,16 @@
package com.ycl.mapper.smoke;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ycl.entity.smoke.OdsLocaleDocument;
/**
 * <p>
 * 监测点信息 Mapper 接口
 * </p>
 *
 * @author lyq
 * @since 2023-02-28
 */
public interface OdsLocaleDocumentMapper extends BaseMapper<OdsLocaleDocument> {
}
ycl-platform/src/main/java/com/ycl/service/smoke/IOdsLocaleDocumentService.java
New file
@@ -0,0 +1,19 @@
package com.ycl.service.smoke;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ycl.entity.smoke.OdsLocaleDocument;
/**
 * <p>
 * 监测点信息 服务类
 * </p>
 *
 * @author lyq
 * @since 2023-02-28
 */
public interface IOdsLocaleDocumentService extends IService<OdsLocaleDocument> {
    void saveByLocaleId(OdsLocaleDocument document);
    OdsLocaleDocument getByLocaleId(String mn);
}
ycl-platform/src/main/java/com/ycl/service/smoke/impl/OdsLocaleDocumentServiceImpl.java
New file
@@ -0,0 +1,39 @@
package com.ycl.service.smoke.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ycl.entity.smoke.OdsLocaleDocument;
import com.ycl.mapper.smoke.OdsLocaleDocumentMapper;
import com.ycl.service.smoke.IOdsLocaleDocumentService;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 监测点信息 服务实现类
 * </p>
 *
 * @author lyq
 * @since 2023-02-28
 */
@Service
public class OdsLocaleDocumentServiceImpl extends ServiceImpl<OdsLocaleDocumentMapper, OdsLocaleDocument> implements IOdsLocaleDocumentService {
    @Override
    public void saveByLocaleId(OdsLocaleDocument document) {
        LambdaQueryWrapper<OdsLocaleDocument> queryWrapper = new LambdaQueryWrapper<OdsLocaleDocument>().eq(OdsLocaleDocument::getLocaleId, document.getLocaleId());
        OdsLocaleDocument localeDocument = this.getOne(queryWrapper);
        if (localeDocument == null) {
            this.save(document);
        } else {
            document.setId(localeDocument.getId());
            this.updateById(document);
        }
    }
    @Override
    public OdsLocaleDocument getByLocaleId(String mn) {
        LambdaQueryWrapper<OdsLocaleDocument> queryWrapper = new LambdaQueryWrapper<OdsLocaleDocument>()
                .eq(OdsLocaleDocument::getMn, mn);
        return this.getOne(queryWrapper);
    }
}
ycl-platform/src/main/resources/mapper/smoke/OdsLocaleDocumentMapper.xml
New file
@@ -0,0 +1,27 @@
<?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.ycl.mapper.smoke.OdsLocaleDocumentMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.ycl.entity.smoke.OdsLocaleDocument">
        <id column="id" property="id"/>
        <result column="mn" property="mn"/>
        <result column="localeId" property="localeId"/>
        <result column="detector_daily_sum_days" property="detectorDailySumDays"/>
        <result column="list_locale" property="listLocale"/>
        <result column="detector_daily" property="detectorDaily"/>
        <result column="intime_data" property="intimeData"/>
        <result column="ten_min_data" property="tenMinData"/>
        <result column="ten_hour_data" property="tenHourData"/>
        <result column="devices" property="devices"/>
        <result column="maintenance" property="maintenance"/>
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id
        ,mn,localeId,detector_daily_sum_days,list_locale,detector_daily,intime_data,ten_min_data,ten_hour_data,devices,maintenance
    </sql>
</mapper>
ycl-smoke/src/main/java/com/ycl/smoke/entity/OdsLocaleDocument.java
New file
@@ -0,0 +1,92 @@
package com.ycl.smoke.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.math.BigDecimal;
/**
 * <p>
 * 监测点信息
 * </p>
 *
 * @author lyq
 * @since 2023-02-28
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("ums_ods_locale_document")
@Builder
public class OdsLocaleDocument implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * Id
     */
    @TableId("id")
    @JsonProperty("Id")
    private Integer id;
    @TableField("mn")
    private String mn;
    @TableField("localeId")
    private String localeId;
    /**
     * 数据检测器每日总和天数
     */
    @TableField("detector_daily_sum_days")
    private String detectorDailySumDays;
    /**
     * '餐饮企业健康情况展示'
     */
    @TableField("list_locale")
    private String listLocale;
    /**
     * '每日查询数据检测器'
     */
    @TableField("detector_daily")
    private String detectorDaily;
    /**
     * '分钟采集数据'
     */
    @TableField("intime_data")
    private String intimeData;
    /**
     * '10min浓度曲线'
     */
    @TableField("ten_min_data")
    private String tenMinData;
    /**
     * '小时折算浓度
     */
    @TableField("ten_hour_data")
    private String tenHourData;
    /**
     * '设备信息'
     */
    @TableField("devices")
    private String devices;
    /**
     * 监测点运维情况
     */
    @TableField("maintenance")
    private String maintenance;
}
ycl-smoke/src/main/java/com/ycl/smoke/mapper/OdsLocaleDocumentMapper.java
New file
@@ -0,0 +1,17 @@
package com.ycl.smoke.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ycl.smoke.entity.OdsLocale;
import com.ycl.smoke.entity.OdsLocaleDocument;
/**
 * <p>
 * 监测点信息 Mapper 接口
 * </p>
 *
 * @author lyq
 * @since 2023-02-28
 */
public interface OdsLocaleDocumentMapper extends BaseMapper<OdsLocaleDocument> {
}
ycl-smoke/src/main/java/com/ycl/smoke/service/IOdsLocaleDocumentService.java
New file
@@ -0,0 +1,18 @@
package com.ycl.smoke.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ycl.smoke.entity.OdsLocale;
import com.ycl.smoke.entity.OdsLocaleDocument;
/**
 * <p>
 * 监测点信息 服务类
 * </p>
 *
 * @author lyq
 * @since 2023-02-28
 */
public interface IOdsLocaleDocumentService extends IService<OdsLocaleDocument> {
    void saveByLocaleId(OdsLocaleDocument document);
}
ycl-smoke/src/main/java/com/ycl/smoke/service/impl/OdsLocaleDocumentServiceImpl.java
New file
@@ -0,0 +1,35 @@
package com.ycl.smoke.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ycl.smoke.entity.OdsLocale;
import com.ycl.smoke.entity.OdsLocaleDocument;
import com.ycl.smoke.mapper.OdsLocaleDocumentMapper;
import com.ycl.smoke.mapper.OdsLocaleMapper;
import com.ycl.smoke.service.IOdsLocaleDocumentService;
import com.ycl.smoke.service.IOdsLocaleService;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 监测点信息 服务实现类
 * </p>
 *
 * @author lyq
 * @since 2023-02-28
 */
@Service
public class OdsLocaleDocumentServiceImpl extends ServiceImpl<OdsLocaleDocumentMapper, OdsLocaleDocument> implements IOdsLocaleDocumentService {
    @Override
    public void saveByLocaleId(OdsLocaleDocument document) {
        LambdaQueryWrapper<OdsLocaleDocument> queryWrapper = new LambdaQueryWrapper<OdsLocaleDocument>().eq(OdsLocaleDocument::getLocaleId, document.getLocaleId());
        OdsLocaleDocument localeDocument = this.getOne(queryWrapper);
        if (localeDocument == null) {
            this.save(document);
        } else {
            document.setId(localeDocument.getId());
            this.updateById(document);
        }
    }
}
ycl-smoke/src/main/java/com/ycl/smoke/task/ScheduledTask.java
@@ -1,6 +1,7 @@
package com.ycl.smoke.task;
import com.alibaba.fastjson.JSON;
import com.aliyuncs.utils.StringUtils;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -21,9 +22,7 @@
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.*;
@Component
public class ScheduledTask {
@@ -49,6 +48,7 @@
    IOdsCurAlarmService curAlarmService;
    IOdsStatisticsService odsStatisticsService;
    IOdsLocaleDocumentService localeDocumentService;
    @Resource
    private RedisService redisService;
@@ -108,6 +108,11 @@
        this.odsStatisticsService = odsStatisticsService;
    }
    @Autowired
    public void setLocaleDocumentService(IOdsLocaleDocumentService localeDocumentService) {
        this.localeDocumentService = localeDocumentService;
    }
    @Scheduled(cron = "0 0 1 * * ?")   // 每天零点执行
    // @Scheduled(cron = "0/1 * * * * ?")   // 每秒执行
    public void alarmMsgTask() {
@@ -129,7 +134,6 @@
                });
                // alarmMsgService.saveBatch(list);
            } else if (responseDto.getStatus() == 114) {
                login();
                alarmMsgTask();
            } else {
                System.out.printf(responseDto.getData().toString());
@@ -164,7 +168,6 @@
                });
                // alarmMsgService.saveBatch(list);
            } else if (responseDto.getStatus() == 114) {
                login();
                queryDataDetectorDaily2Task();
            } else {
                System.out.printf(responseDto.getData().toString());
@@ -195,7 +198,6 @@
                });
                // alarmMsgService.saveBatch(list);
            } else if (responseDto.getStatus() == 114) {
                login();
                queryDataDetectorDaily2Task();
            } else {
                System.out.printf(responseDto.getData().toString());
@@ -205,13 +207,13 @@
        }
    }
    @Scheduled(cron = "0 */30 * * * ?")   // 每5分钟执行
    @Scheduled(cron = "0 */30 * * * ?")   // 每30分钟执行
    public void loginTask() {
        login();
    }
    //    @Scheduled(cron = "0 0 1 * * ?")   // 每天零点执行
    @Scheduled(cron = "0 */1 * * * ?")   // 每5分钟执行
    @Scheduled(cron = "0 */5 * * * ?")   // 每5分钟执行
    public void listDataInTime() {
        DataIntimeParamDto paramDto = DataIntimeParamDto.builder().build();
        // {"StartAt":0,"Size":20,"Typ":2,"SortBy":"status","SortMode":"asc","Param":{"StatusOfRecord":"NORMAL"}}
@@ -263,7 +265,6 @@
                });
                // alarmMsgService.saveBatch(list);
            } else if (responseDto.getStatus() == 114) {
                login();
                queryDataDetectorDaily2Task();
            } else {
                System.out.printf(responseDto.getData().toString());
@@ -295,7 +296,6 @@
                });
                // alarmMsgService.saveBatch(list);
            } else if (responseDto.getStatus() == 114) {
                login();
                queryDataDetectorDaily2Task();
            } else {
                System.out.printf(responseDto.getData().toString());
@@ -330,7 +330,6 @@
                });
                // alarmMsgService.saveBatch(list);
            } else if (responseDto.getStatus() == 114) {
                login();
                queryDataDetectorDaily2Task();
            } else {
                System.out.printf(responseDto.getData().toString());
@@ -362,7 +361,6 @@
                });
                // alarmMsgService.saveBatch(list);
            } else if (responseDto.getStatus() == 114) {
                login();
                queryDataDetectorDaily2Task();
            } else {
                System.out.printf(responseDto.getData().toString());
@@ -381,21 +379,9 @@
        try {
            CurAlarmParamDto paramDto = CurAlarmParamDto.builder().StartAt(0).Size(20).SortBy("status").SortMode("asc").Typ(2).build();
            CurAlarmParamChildDto childDto = CurAlarmParamChildDto.builder().build();
            Calendar calendar = Calendar.getInstance();
            calendar.set(Calendar.SECOND, 0);
            calendar.set(Calendar.MINUTE, 0);
            calendar.set(Calendar.HOUR_OF_DAY, 0);
            calendar.set(Calendar.MILLISECOND, 0);
            calendar.add(Calendar.DAY_OF_MONTH, -1);
            long todayZero = calendar.getTimeInMillis();
            calendar.add(Calendar.DAY_OF_MONTH, 1);
            calendar.add(Calendar.MONTH, -1);
            long lastMonthZero = calendar.getTimeInMillis();
            childDto.setStartAt(lastMonthZero / 1000);
            childDto.setEndAt(todayZero / 1000);
            Long[] dates = getTodayAndLastMonth();
            childDto.setStartAt(dates[0]);
            childDto.setEndAt(dates[1]);
            childDto.setLocaleWithDevice(true);
            paramDto.setParam(childDto);
@@ -414,7 +400,6 @@
                });
                // alarmMsgService.saveBatch(list);
            } else if (responseDto.getStatus() == 114) {
                login();
                listCurAlarm();
            } else {
                System.out.printf(responseDto.getData().toString());
@@ -450,7 +435,6 @@
                odsStatisticsService.update(update);
            } else if (responseDto.getStatus() == 114) {
                login();
                listDataDetectorDailyStats();
            } else {
                System.out.printf(responseDto.getData().toString());
@@ -470,20 +454,9 @@
            CurAlarmParam2Dto paramDto = CurAlarmParam2Dto.builder().StartAt(0).Size(20).build();
            CurAlarmParamChild2Dto childDto = CurAlarmParamChild2Dto.builder().build();
            Calendar calendar = Calendar.getInstance();
            calendar.set(Calendar.SECOND, 0);
            calendar.set(Calendar.MINUTE, 0);
            calendar.set(Calendar.HOUR_OF_DAY, 0);
            calendar.set(Calendar.MILLISECOND, 0);
            calendar.add(Calendar.DAY_OF_MONTH, -1);
            long todayZero = calendar.getTimeInMillis();
            calendar.add(Calendar.DAY_OF_MONTH, 1);
            calendar.add(Calendar.MONTH, -1);
            long lastMonthZero = calendar.getTimeInMillis();
            childDto.setStartAt(lastMonthZero / 1000);
            childDto.setEndAt(todayZero / 1000);
            Long[] dates = getTodayAndLastMonth();
            childDto.setStartAt(dates[0]);
            childDto.setEndAt(dates[1]);
            paramDto.setParam(childDto);
            // {"StartAt":0,"Size":20,"Param":{"startAt":1697040000,"endAt":1699631999}}:
            String json = smokeDetectionService.getListDetectorDaily(paramDto, redisService.get(RedisKey.SMOKE_TOKEN).toString());
@@ -506,6 +479,75 @@
        }
    }
    /**
     * 实时档案
     */
    @Scheduled(cron = "0 */10 * * * ?")   // 每10分钟执行
//    @Scheduled(cron = "0/1 * * * * ?")   // 每秒执行
    public void listLocaleDocument() {
        String auth = redisService.get(RedisKey.SMOKE_TOKEN).toString();
        String host = "http://116.62.234.187:8120";
        try {
            List<OdsLocale> odsLocales = localeService.list();
            for (OdsLocale locale : odsLocales) {
                if (!StringUtils.isEmpty(locale.getMnLast())) {
                    Long[] dates = getTodayAndLastMonth();
                    String detectorDailySumDayJson = "{\"LocaleId\":\"" + locale.getId() + "\",\"AcquitAtBegin\":" + dates[1] + ",\"AcquitAtEnd\":" + (dates[1] + 86400) + "}";
                    String detectorDailySumDays = HttpUtil.HttpPostWithJson(host + "/admin/listDataDetectorDailySumDaysByLocaleId", detectorDailySumDayJson, auth);
                    String listLocaleJson = "{\"Param\":{\"id\":\"" + locale.getId() + "\"}}";
                    String listLocale = HttpUtil.HttpPostWithJson(host + "/admin/listLocale", listLocaleJson, auth);
                    String detectorDailyJson = "{\"LocaleId\":\"" + locale.getId() + "\",\"AcquitAtBegin\":" + dates[1] + ",\"AcquitAtEnd\":" + (dates[1] + 86400) + "}";
                    String detectorDaily = HttpUtil.HttpPostWithJson(host + "/admin/queryDataDetectorDaily", detectorDailyJson, auth);
                    String listIntimeDataJson = "{\"StartAt\":0,\"Size\":20,\"mn\":\"" + locale.getMnLast() + "\",\"typ\":2,\"at\":0}";
                    String listIntimeData = HttpUtil.HttpPostWithJson(host + "/admin/listIntimeData", listIntimeDataJson, auth);
                    String listTenMinDataJson = "{\"mn\":\"" + locale.getMnLast() + "\",\"at\":" + dates[1] + "}";
                    String listTenMinData = HttpUtil.HttpPostWithJson(host + "/admin/listTenMinData", listTenMinDataJson, auth);
                    Map<String, Object> tenHourMap = new HashMap<>();
                    tenHourMap.put("at", dates[1]);
                    tenHourMap.put("mn", locale.getMnLast());
                    String listTenHourData = HttpUtil.doGet(host + "/admin/listTenHourData", tenHourMap, auth);
                    String devicesJson = "{\"LocaleId\":\"" + locale.getId() + "\",\"AcquitAtBegin\":" + dates[1] + ",\"AcquitAtEnd\":" + (dates[1] + 86400) + "}";
                    String devices = HttpUtil.HttpPostWithJson(host + "/admin/getDevicesOfLocale", devicesJson, auth);
                    String maintenanceJson = "{\"StartAt\":0,\"Size\":20,\"FormType\":1,\"Param\":{\"maintenance.locale_id\":{\"S\":2,\"V\":\"cg1uk9j1lf29c3qf3gvg\"}}}";
                    String maintenance = HttpUtil.HttpPostWithJson(host + "/admin/listMaintenance", maintenanceJson, auth);
                    OdsLocaleDocument document = OdsLocaleDocument.builder().localeId(locale.getId()).mn(locale.getMnLast())
                            .detectorDailySumDays(detectorDailySumDays).detectorDaily(detectorDaily).listLocale(listLocale)
                            .intimeData(listIntimeData).tenMinData(listTenMinData).tenHourData(listTenHourData)
                            .devices(devices).maintenance(maintenance).build();
                    localeDocumentService.saveByLocaleId(document);
                }
            }
        } catch (Exception ex) {
            System.out.printf(ex.getMessage());
        }
    }
    private Long[] getTodayAndLastMonth() {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        calendar.add(Calendar.DAY_OF_MONTH, -1);
        long todayZero = calendar.getTimeInMillis();
        calendar.add(Calendar.DAY_OF_MONTH, 1);
        calendar.add(Calendar.MONTH, -1);
        long lastMonthZero = calendar.getTimeInMillis();
        Long[] dates = new Long[2];
        dates[0] = lastMonthZero / 1000;
        dates[1] = todayZero / 1000;
        return dates;
    }
    void login() {
        LoginParamDto loginParamDto = LoginParamDto.builder().username("遂昌城管局").password("123456").noCode(true).build();
ycl-smoke/src/main/java/com/ycl/smoke/utils/HttpUtil.java
@@ -30,7 +30,7 @@
    private static final CloseableHttpClient httpclient = HttpClients.createDefault();
    public static String doGet(String urlPath, Map<String, Object> params)
    public static String doGet(String urlPath, Map<String, Object> params,String token)
            throws Exception {
        StringBuilder sb = new StringBuilder(urlPath);
        if (params != null && !params.isEmpty()) { // 说明有参数
@@ -54,6 +54,7 @@
        URL url = new URL(sb.toString());
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestProperty("auth", token);
        conn.setConnectTimeout(5000); // 5s超时
        conn.setRequestMethod("GET");
ycl-smoke/src/main/resources/mapper/smoke/OdsLocaleDocumentMapper.xml
New file
@@ -0,0 +1,27 @@
<?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.ycl.smoke.mapper.OdsLocaleDocumentMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.ycl.smoke.entity.OdsLocaleDocument">
        <id column="id" property="id"/>
        <result column="mn" property="mn"/>
        <result column="localeId" property="localeId"/>
        <result column="detector_daily_sum_days" property="detectorDailySumDays"/>
        <result column="list_locale" property="listLocale"/>
        <result column="detector_daily" property="detectorDaily"/>
        <result column="intime_data" property="intimeData"/>
        <result column="ten_min_data" property="tenMinData"/>
        <result column="ten_hour_data" property="tenHourData"/>
        <result column="devices" property="devices"/>
        <result column="maintenance" property="maintenance"/>
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id
        ,mn,localeId,detector_daily_sum_days,list_locale,detector_daily,intime_data,ten_min_data,ten_hour_data,devices,maintenance
    </sql>
</mapper>