天气和在线离线

This commit is contained in:
guo 2023-09-08 14:42:19 +08:00
parent 65df874493
commit 84d907af1d
8 changed files with 122 additions and 87 deletions

View File

@ -1,9 +1,8 @@
<?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.zhgd.xmgl.modules.electrical.mapper.ElectricalDevMapper">
<select id="selectElectricalDevList" resultType="com.zhgd.xmgl.modules.electrical.entity.ElectricalDev">
select *,(case when round((UNIX_TIMESTAMP(now())-UNIX_TIMESTAMP(real_time))/60) &lt;=10 then 2 else 1 end)
select *,(case when round((UNIX_TIMESTAMP(now())-UNIX_TIMESTAMP(real_time))/86400) &lt;=7 then 2 else 1 end)
is_closed
from electrical_dev
where project_sn=#{projectSn}
@ -11,7 +10,8 @@
<select id="selectElectricalDevCount" resultType="java.util.Map" parameterType="map">
SELECT
COUNT(1) devNum,
IFNULL(SUM((case when round((UNIX_TIMESTAMP(now())-UNIX_TIMESTAMP(real_time))/60)&lt;=10 then 1 else 0 end)),0) devOnline
IFNULL(SUM((case when round((UNIX_TIMESTAMP(now())-UNIX_TIMESTAMP(real_time))/86400)&lt;=7 then 1 else 0
end)),0) devOnline
FROM electrical_dev de INNER JOIN project a ON de.project_sn=a.project_sn
INNER JOIN company cp ON a.company_sn=cp.company_sn
INNER JOIN company b ON cp.parent_id=b.company_id

View File

@ -20,8 +20,6 @@ public interface EnvironmentDevMapper extends BaseMapper<EnvironmentDev> {
List<EnvironmentDev> selectEnvironmentDevList(Map<String, Object> map);
List<EnvironmentDev> selectProjectEnvironmentDevList(Map<String, Object> map);
List<Map<String,Object>> selectAllDevCount();
List<Map<String,Object>> selectCompanyDevCountStatistics(Map<String, Object> map);

View File

@ -1,62 +1,75 @@
<?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.zhgd.xmgl.modules.environment.mapper.EnvironmentDevMapper">
<sql id="getOnline">
(case
when round((UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(
${real_time}
)) / 86400) &lt;= 7 then 1
else 0 end)
</sql>
<update id="updateEnvironmentDevRealTimeById">
UPDATE environment_dev SET real_time=now()
WHERE id=#{id}
UPDATE environment_dev
SET real_time=now()
WHERE id = #{id}
</update>
<select id="selectEnvironmentDevList" resultType="com.zhgd.xmgl.modules.environment.entity.EnvironmentDev">
select *,(case when round((UNIX_TIMESTAMP(now())-UNIX_TIMESTAMP(real_time))/60) &lt;=10 then 1 else 0 end)
select *,
<include refid="getOnline">
<property name="real_time" value="real_time"/>
</include>
dev_online
from environment_dev
where project_sn=#{projectSn}
</select>
<select id="selectProjectEnvironmentDevList" resultType="com.zhgd.xmgl.modules.environment.entity.EnvironmentDev">
select *,(case when round((UNIX_TIMESTAMP(now())-UNIX_TIMESTAMP(real_time))/60) &lt;=10 then 1 else 0 end)
dev_online
from environment_dev
where project_sn=#{projectSn}
where project_sn = #{projectSn}
</select>
<select id="selectAllDevCount" resultType="java.util.Map">
SELECT project_sn projectSn,
COUNT(1) devNum,
SUM((case
when round((UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(real_time)) / 60) &lt;= 10 then 1
else 0 end)) devOnline
SELECT project_sn projectSn,
COUNT(1) devNum,
SUM(
<include refid="getOnline">
<property name="real_time" value="real_time"/>
</include>
) devOnline
FROM environment_dev
GROUP BY project_sn
</select>
<select id="selectCompanyDevCountStatistics" resultType="java.util.Map">
SELECT
IFNULL(SUM(IFNULL(d.totalDev,0)),0) totalDev,
IFNULL(SUM(IFNULL(d.devOnline,0)),0) devOnline,
IFNULL(SUM(IFNULL(d.totalDev,0)),0)-IFNULL(SUM(IFNULL(d.devOnline,0)),0) devNotOnline
SELECT IFNULL(SUM(IFNULL(d.totalDev, 0)), 0) totalDev
, IFNULL(SUM(IFNULL(d.devOnline, 0)), 0) devOnline
, IFNULL(SUM(IFNULL(d.totalDev, 0)), 0) - IFNULL(SUM(IFNULL(d.devOnline, 0)), 0) devNotOnline
<if test="companyType == '1'.toString()">
,a.company_name name
, a.company_name name
</if>
<if test="companyType == '2'.toString()">
,b.company_name name
, b.company_name name
</if>
<if test="companyType == '3'.toString()">
,cp.company_name name
, cp.company_name name
</if>
<if test="companyType == '4'.toString()">
,c.project_name name
, c.project_name name
</if>
<if test="companyType == '5'.toString()">
,c.project_name name
, c.project_name name
</if>
FROM company a LEFT JOIN company b ON b.parent_id=a.company_id
LEFT JOIN company cp ON b.company_id=cp.parent_id
LEFT JOIN project c ON cp.company_sn=c.company_sn
FROM company a
LEFT JOIN company b ON b.parent_id = a.company_id
LEFT JOIN company cp ON b.company_id = cp.parent_id
LEFT JOIN project c ON cp.company_sn = c.company_sn
LEFT JOIN (SELECT w1.project_sn,
COUNT(1) totalDev,
IFNULL(SUM((case when round((UNIX_TIMESTAMP(now())-UNIX_TIMESTAMP(real_time))/60)&lt;=10 then 1 else 0 end)),0) devOnline
IFNULL(SUM(
<include refid="getOnline">
<property name="real_time" value="real_time"/>
</include>
), 0) devOnline
from environment_dev w1
GROUP BY w1.project_sn) d ON c.project_sn=d.project_sn
GROUP BY w1.project_sn) d ON c.project_sn = d.project_sn
<if test="companyType == '1'.toString()">
WHERE a.headquarters_sn=#{sn} AND a.company_type=2
WHERE a.headquarters_sn = #{sn}
AND a.company_type = 2
GROUP BY a.company_id
</if>
<if test="companyType == '2'.toString()">
@ -77,75 +90,86 @@
order by totalDev desc
</select>
<select id="selectEnvironmentDevCount" resultType="java.util.Map" parameterType="map">
SELECT
COUNT(1) devNum,
IFNULL(SUM((case when round((UNIX_TIMESTAMP(now())-UNIX_TIMESTAMP(real_time))/60)&lt;=10 then 1 else 0 end)),0) devOnline
FROM environment_dev de INNER JOIN project a ON de.project_sn=a.project_sn
INNER JOIN company cp ON a.company_sn=cp.company_sn
INNER JOIN company b ON cp.parent_id=b.company_id
Left JOIN company f ON b.parent_id=f.company_id
SELECT COUNT(1) devNum,
IFNULL(SUM(
<include refid="getOnline">
<property name="real_time" value="real_time"/>
</include>
), 0) devOnline
FROM environment_dev de
INNER JOIN project a ON de.project_sn = a.project_sn
INNER JOIN company cp ON a.company_sn = cp.company_sn
INNER JOIN company b ON cp.parent_id = b.company_id
Left JOIN company f ON b.parent_id = f.company_id
<where>
<if test="companyType == '1'.toString()">
and f.headquarters_sn=#{sn}
and f.headquarters_sn = #{sn}
</if>
<if test="companyType == '2'.toString()">
and f.company_sn=#{sn}
and f.company_sn = #{sn}
</if>
<if test="companyType == '3'.toString()">
and b.company_sn=#{sn}
and b.company_sn = #{sn}
</if>
<if test="companyType == '4'.toString()">
and de.project_sn=#{sn}
and de.project_sn = #{sn}
</if>
<if test="companyType == '5'.toString()">
and cp.company_sn=#{sn}
and cp.company_sn = #{sn}
</if>
</where>
</select>
<select id="selectProjectEnvironmentDevCount" resultType="java.util.Map" parameterType="map">
select tp.*,
IFNULL(tp.devNum,0)-IFNULL(tp.devOnline,0) devNotOnline
from (SELECT
COUNT(1) devNum,
IFNULL(SUM((case when round((UNIX_TIMESTAMP(now())-UNIX_TIMESTAMP(real_time))/60)&lt;=10 then 1 else 0 end)),0) devOnline
FROM environment_dev de
where de.project_sn=#{projectSn}
) tp
IFNULL(tp.devNum, 0) - IFNULL(tp.devOnline, 0) devNotOnline
from (SELECT COUNT(1) devNum,
IFNULL(SUM(
<include refid="getOnline">
<property name="real_time" value="real_time"/>
</include>
), 0) devOnline
FROM environment_dev de
where de.project_sn = #{projectSn}
) tp
</select>
<select id="selectEnvironmentDevAccessCountList" resultType="java.util.Map">
SELECT
IFNULL(SUM(IFNULL(d.totalDev,0)),0) totalDev,
IFNULL(SUM(IFNULL(d.devOnline,0)),0) devOnline,
IFNULL(SUM(IFNULL(d.num,0)),0) devProjectNum,
IFNULL(SUM((CASE when c.project_sn is not null then 1 else 0 end )),0) totalProjectNum,
IFNULL(SUM(IFNULL(d.totalDev,0)),0)-IFNULL(SUM(IFNULL(d.devOnline,0)),0) devNotOnline
SELECT IFNULL(SUM(IFNULL(d.totalDev, 0)), 0) totalDev
, IFNULL(SUM(IFNULL(d.devOnline, 0)), 0) devOnline
, IFNULL(SUM(IFNULL(d.num, 0)), 0) devProjectNum
, IFNULL(SUM((CASE when c.project_sn is not null then 1 else 0 end)), 0) totalProjectNum
, IFNULL(SUM(IFNULL(d.totalDev, 0)), 0) - IFNULL(SUM(IFNULL(d.devOnline, 0)), 0) devNotOnline
<if test="companyType == '1'.toString()">
,a.company_name name
, a.company_name name
</if>
<if test="companyType == '2'.toString()">
,b.company_name name
, b.company_name name
</if>
<if test="companyType == '3'.toString()">
,cp.company_name name
, cp.company_name name
</if>
<if test="companyType == '4'.toString()">
,c.project_name name
, c.project_name name
</if>
<if test="companyType == '5'.toString()">
,c.project_name name
, c.project_name name
</if>
FROM company a LEFT JOIN company b ON b.parent_id=a.company_id
LEFT JOIN company cp ON b.company_id=cp.parent_id
LEFT JOIN project c ON cp.company_sn=c.company_sn
LEFT JOIN (SELECT w1.project_sn,1 num,
FROM company a
LEFT JOIN company b ON b.parent_id = a.company_id
LEFT JOIN company cp ON b.company_id = cp.parent_id
LEFT JOIN project c ON cp.company_sn = c.company_sn
LEFT JOIN (SELECT w1.project_sn,
1 num,
COUNT(1) totalDev,
IFNULL(SUM((case when round((UNIX_TIMESTAMP(now())-UNIX_TIMESTAMP(real_time))/60)&lt;=10 then 1 else 0 end)),0) devOnline
IFNULL(SUM(
<include refid="getOnline">
<property name="real_time" value="real_time"/>
</include>
), 0) devOnline
from environment_dev w1
GROUP BY w1.project_sn) d ON c.project_sn=d.project_sn
GROUP BY w1.project_sn) d ON c.project_sn = d.project_sn
<if test="companyType == '1'.toString()">
WHERE a.headquarters_sn=#{sn} AND a.company_type=2
WHERE a.headquarters_sn = #{sn}
AND a.company_type = 2
GROUP BY a.company_id
</if>
<if test="companyType == '2'.toString()">
@ -165,5 +189,4 @@
</if>
order by totalProjectNum desc
</select>
</mapper>

View File

@ -204,7 +204,7 @@ public class EnvironmentDevServiceImpl extends ServiceImpl<EnvironmentDevMapper,
@Override
public EnvironmentDevAlaramCountListVo selectEnvironmentDevAlaramCountList(Map<String, Object> map) {
List<EnvironmentDev> devList = environmentDevMapper.selectProjectEnvironmentDevList(map);
List<EnvironmentDev> devList = environmentDevMapper.selectEnvironmentDevList(map);
int totalDevOnlineNum = 0;
int totalAlarmNum = 0;
if (devList != null && devList.size() > 0) {

View File

@ -30,9 +30,7 @@
</insert>
<select id="selectPageDetail" resultType="com.zhgd.xmgl.modules.frontier.entity.FrontierProtectionDev">
select fpd.*,i.team_name,IFNULL(((case when round((UNIX_TIMESTAMP(now())-UNIX_TIMESTAMP(fpd.upload_time))/60)&lt;=30
then 1 else 0 end)),0)
online
select fpd.*,i.team_name,1 online
from frontier_protection_dev fpd left join team_info i on i.id=fpd.duty_team_info_id
${ew.customSqlSegment}
</select>

View File

@ -2,9 +2,9 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zhgd.xmgl.modules.poisonous.mapper.PoisonousGasDevMapper">
<select id="queryPageList" resultType="com.zhgd.xmgl.modules.poisonous.entity.PoisonousGasDev">
select pgd.*, ti.team_name dutyTeamInfoName,IFNULL(((case when
round((UNIX_TIMESTAMP(now())-UNIX_TIMESTAMP(pgd.upload_date))/60)&lt;=30 then 1 else 0 end)),0)
online
select pgd.*,
ti.team_name dutyTeamInfoName,
1 online
from poisonous_gas_dev pgd
join team_info ti on ti.id = pgd.duty_team_info_id
${ew.customSqlSegment}

View File

@ -2,9 +2,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zhgd.xmgl.modules.smoke.mapper.SmokeDevMapper">
<select id="queryWrapper" resultType="com.zhgd.xmgl.modules.smoke.entity.SmokeDev">
select sd.*,ti.team_name dutyTeamInfoName,IFNULL(((case when
round((UNIX_TIMESTAMP(now())-UNIX_TIMESTAMP(sd.upload_date))/60)&lt;=30 then 1 else 0 end)),0)
online
select sd.*,ti.team_name dutyTeamInfoName,1 online
from smoke_dev sd inner join team_info
ti on ti.id=sd.duty_team_info_id
${ew.customSqlSegment}

View File

@ -1,5 +1,6 @@
package com.zhgd.xmgl.util;
import cn.hutool.http.HttpException;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
@ -33,6 +34,10 @@ public class AqiUtil {
private static RedisRepository redisRepository;
public static String SYSTEM_CITIES_KEY = "SYSTEM_CITIES";
public static String WEATHER_DATA = "WEATHER_DATA:";
/**
* 天气质量
*/
public static String WEATHER_QUALITY = "WEATHER_QUALITY:";
@Autowired
public void setSystemCitiesMapper(SystemCitiesMapper systemCitiesMapper) {
@ -162,6 +167,11 @@ public class AqiUtil {
*/
public static Double getWeatherInfo(String cityCode) {
List<SystemCities> systemCities = redisRepository.getOrSet(SYSTEM_CITIES_KEY, () -> systemCitiesMapper.selectList(null), 60 * 60L);
String key = WEATHER_QUALITY + cityCode;
Object ro = redisRepository.get(key);
if (ro != null) {
return (Double) ro;
}
Map<String, SystemCities> cityIdMap = systemCities.stream().collect(Collectors.toMap(e -> e.getCityid(), Function.identity(), (o, o2) -> o));
//空气指数
Double air = null;
@ -173,7 +183,7 @@ public class AqiUtil {
if (StringUtils.isNotBlank(cityId)) {
param.put("cityid", cityId);
}
String result = HttpUtil.get("https://v0.yiketianqi.com/free/day", param);
String result = HttpUtil.get("https://v0.yiketianqi.com/free/day", param, 5000);
if (result != null && result.length() > 0) {
JSONObject obj = JSONObject.parseObject(result);
if (obj != null && obj.getString("air") != null) {
@ -186,6 +196,7 @@ public class AqiUtil {
if (air == null) {
air = 80d;
}
redisRepository.set(key, air, 60 * 60L);
return air;
}
@ -235,8 +246,15 @@ public class AqiUtil {
log.info(getDegree(getPollutionDegree(temp)));*/
//log.info(getWeatherInfo("110100"));
//log.info(getWeatherData("110100"));
System.out.println(getWeatherInfo("11"));
//System.out.println(getWeatherInfo("11"));
//log.info(getDegree(getPollutionDegree(39d)));
try {
String result = HttpUtil.get("https://v0.yiketianqi.com/free/day", 1000);
} catch (HttpException e) {
e.printStackTrace();
}
System.out.println(123);
}
}