Merge branch 'guoshengxiong' into guoshengxiongtemp
This commit is contained in:
commit
b5f945faa5
@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.toolkit.StringPool;
|
|||||||
import com.baomidou.mybatisplus.extension.parser.JsqlParserSupport;
|
import com.baomidou.mybatisplus.extension.parser.JsqlParserSupport;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor;
|
import com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor;
|
||||||
import com.zhgd.annotation.DataScope;
|
import com.zhgd.annotation.DataScope;
|
||||||
|
import com.zhgd.xmgl.constant.Cts;
|
||||||
import com.zhgd.xmgl.security.util.SecurityUtils;
|
import com.zhgd.xmgl.security.util.SecurityUtils;
|
||||||
import com.zhgd.xmgl.util.EnvironmentUtil;
|
import com.zhgd.xmgl.util.EnvironmentUtil;
|
||||||
import com.zhgd.xmgl.util.LogMdcUtil;
|
import com.zhgd.xmgl.util.LogMdcUtil;
|
||||||
@ -46,14 +47,14 @@ public class DataScopeInterceptor extends JsqlParserSupport implements InnerInte
|
|||||||
if (parameter instanceof Map) {
|
if (parameter instanceof Map) {
|
||||||
for (Object val : ((Map<?, ?>) parameter).values()) {
|
for (Object val : ((Map<?, ?>) parameter).values()) {
|
||||||
if (val instanceof String) {
|
if (val instanceof String) {
|
||||||
if (val.equals("ignoreDataScope")) {
|
if (val.equals(Cts.IGNORE_DATA_SCOPE)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (parameter instanceof String) {
|
if (parameter instanceof String) {
|
||||||
return parameter.equals("ignoreDataScope");
|
return parameter.equals(Cts.IGNORE_DATA_SCOPE);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -60,4 +60,5 @@ public interface Cts {
|
|||||||
String HK_SYNC_AUTH_SUCCESS_KEY = "hkSyncAuthSuccess:";
|
String HK_SYNC_AUTH_SUCCESS_KEY = "hkSyncAuthSuccess:";
|
||||||
String TL_HK_SYNC_ID = "tl_hk_sync_id";
|
String TL_HK_SYNC_ID = "tl_hk_sync_id";
|
||||||
String TL_IS_NOMAL_INTERFACE = "isNormalInterface";
|
String TL_IS_NOMAL_INTERFACE = "isNormalInterface";
|
||||||
|
String IGNORE_DATA_SCOPE = "ignoreDataScope";
|
||||||
}
|
}
|
||||||
|
|||||||
@ -90,7 +90,7 @@ public class DustNoiseDataController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ApiOperation(value = "查询环境设备最新一条实时数据", notes = "查询环境设备最新一条实时数据", httpMethod = "POST")
|
@ApiOperation(value = "查询今日环境设备最新一条实时数据", notes = "查询今日环境设备最新一条实时数据", httpMethod = "POST")
|
||||||
@ApiImplicitParams({
|
@ApiImplicitParams({
|
||||||
@ApiImplicitParam(name = "projectSn", value = "项目SN", paramType = "body", required = true, dataType = "String"),
|
@ApiImplicitParam(name = "projectSn", value = "项目SN", paramType = "body", required = true, dataType = "String"),
|
||||||
@ApiImplicitParam(name = "deviceId", value = "设备编号", dataType = "String", paramType = "body", required = false)
|
@ApiImplicitParam(name = "deviceId", value = "设备编号", dataType = "String", paramType = "body", required = false)
|
||||||
|
|||||||
@ -86,7 +86,7 @@ public class RainBigScreenController {
|
|||||||
return Result.success(rainRecordService.queryTodayTrendGroupByHour(param));
|
return Result.success(rainRecordService.queryTodayTrendGroupByHour(param));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "查询最新一条实时数据", notes = "查询最新一条实时数据", httpMethod = "POST")
|
@ApiOperation(value = "查询今日最新一条实时数据", notes = "查询今日最新一条实时数据", httpMethod = "POST")
|
||||||
@ApiImplicitParams({
|
@ApiImplicitParams({
|
||||||
@ApiImplicitParam(name = "projectSn", value = "项目SN", paramType = "body", required = true, dataType = "String"),
|
@ApiImplicitParam(name = "projectSn", value = "项目SN", paramType = "body", required = true, dataType = "String"),
|
||||||
@ApiImplicitParam(name = "devSn", value = "设备sn", paramType = "body", required = true, dataType = "String"),
|
@ApiImplicitParam(name = "devSn", value = "设备sn", paramType = "body", required = true, dataType = "String"),
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
package com.zhgd.xmgl.modules.environment.entity;
|
package com.zhgd.xmgl.modules.environment.entity;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
@ -64,12 +65,7 @@ public class RainDev implements Serializable {
|
|||||||
@Excel(name = "报警推送人,多个逗号分割", width = 15)
|
@Excel(name = "报警推送人,多个逗号分割", width = 15)
|
||||||
@ApiModelProperty(value = "报警推送人,多个逗号分割")
|
@ApiModelProperty(value = "报警推送人,多个逗号分割")
|
||||||
private java.lang.String alarmPushWorkerId;
|
private java.lang.String alarmPushWorkerId;
|
||||||
/**
|
|
||||||
* 在线状态(0.离线 1.在线)
|
|
||||||
*/
|
|
||||||
@Excel(name = "在线状态(0.离线 1.在线)", width = 15)
|
|
||||||
@ApiModelProperty(value = "在线状态(0.离线 1.在线)")
|
|
||||||
private java.lang.Integer online;
|
|
||||||
/**
|
/**
|
||||||
* 上次上传数据时间
|
* 上次上传数据时间
|
||||||
*/
|
*/
|
||||||
@ -85,4 +81,11 @@ public class RainDev implements Serializable {
|
|||||||
*/
|
*/
|
||||||
@ApiModelProperty(value = "更新时间")
|
@ApiModelProperty(value = "更新时间")
|
||||||
private java.util.Date updateDate;
|
private java.util.Date updateDate;
|
||||||
|
/**
|
||||||
|
* 在线状态(0.离线 1.在线)
|
||||||
|
*/
|
||||||
|
@Excel(name = "在线状态(0.离线 1.在线)", width = 15)
|
||||||
|
@ApiModelProperty(value = "在线状态(0.离线 1.在线)")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private java.lang.Integer online;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -23,4 +23,6 @@ public interface RainDevMapper extends BaseMapper<RainDev> {
|
|||||||
IPage<RainDev> queryList(Page<RainDev> page, @Param(Constants.WRAPPER) QueryWrapper<RainDev> queryWrapper);
|
IPage<RainDev> queryList(Page<RainDev> page, @Param(Constants.WRAPPER) QueryWrapper<RainDev> queryWrapper);
|
||||||
|
|
||||||
List<RainDev> queryList( @Param(Constants.WRAPPER)QueryWrapper<RainDev> queryWrapper);
|
List<RainDev> queryList( @Param(Constants.WRAPPER)QueryWrapper<RainDev> queryWrapper);
|
||||||
|
|
||||||
|
RainDev queryById(String id);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -75,6 +75,7 @@
|
|||||||
<if test="deviceId != null and deviceId != ''">
|
<if test="deviceId != null and deviceId != ''">
|
||||||
and device_id = #{deviceId}
|
and device_id = #{deviceId}
|
||||||
</if>
|
</if>
|
||||||
|
and upload_date >= CONCAT(DATE_FORMAT(now(), '%Y-%m-%d'), ' 00:00:00')
|
||||||
ORDER BY upload_date desc
|
ORDER BY upload_date desc
|
||||||
limit 1
|
limit 1
|
||||||
</select>
|
</select>
|
||||||
|
|||||||
@ -3,8 +3,16 @@
|
|||||||
<mapper namespace="com.zhgd.xmgl.modules.environment.mapper.RainDevMapper">
|
<mapper namespace="com.zhgd.xmgl.modules.environment.mapper.RainDevMapper">
|
||||||
|
|
||||||
<select id="queryList" resultType="com.zhgd.xmgl.modules.environment.entity.RainDev">
|
<select id="queryList" resultType="com.zhgd.xmgl.modules.environment.entity.RainDev">
|
||||||
select t.*
|
select t.*,
|
||||||
|
IFNULL(((case when round((UNIX_TIMESTAMP(now())-UNIX_TIMESTAMP(last_upload_time))/60)<=30 then 1 else 0 end)),0) as online
|
||||||
from rain_dev as t
|
from rain_dev as t
|
||||||
${ew.customSqlSegment}
|
${ew.customSqlSegment}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="queryById" resultType="com.zhgd.xmgl.modules.environment.entity.RainDev">
|
||||||
|
select t.*,
|
||||||
|
IFNULL(((case when round((UNIX_TIMESTAMP(now())-UNIX_TIMESTAMP(last_upload_time))/60)<=30 then 1 else 0 end)),0) as online
|
||||||
|
from rain_dev as t
|
||||||
|
where t.id = #{id}
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
package com.zhgd.xmgl.modules.environment.service.impl;
|
package com.zhgd.xmgl.modules.environment.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.util.NumberUtil;
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
@ -16,7 +15,6 @@ import com.zhgd.xmgl.modules.environment.mapper.EnvironmentDevMapper;
|
|||||||
import com.zhgd.xmgl.modules.environment.mapper.EnvironmentWarningMapper;
|
import com.zhgd.xmgl.modules.environment.mapper.EnvironmentWarningMapper;
|
||||||
import com.zhgd.xmgl.modules.environment.service.IDustNoiseDataService;
|
import com.zhgd.xmgl.modules.environment.service.IDustNoiseDataService;
|
||||||
import com.zhgd.xmgl.modules.environment.service.IEnvironmentAlarmService;
|
import com.zhgd.xmgl.modules.environment.service.IEnvironmentAlarmService;
|
||||||
import com.zhgd.xmgl.modules.sprayrt.service.ISprayRtDevService;
|
|
||||||
import com.zhgd.xmgl.util.DateUtils;
|
import com.zhgd.xmgl.util.DateUtils;
|
||||||
import com.zhgd.xmgl.util.MessageUtil;
|
import com.zhgd.xmgl.util.MessageUtil;
|
||||||
import com.zhgd.xmgl.util.WindDirectionUtils;
|
import com.zhgd.xmgl.util.WindDirectionUtils;
|
||||||
@ -27,7 +25,10 @@ import org.springframework.stereotype.Service;
|
|||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.*;
|
import java.util.Collections;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@ -73,32 +74,9 @@ public class DustNoiseDataServiceImpl extends ServiceImpl<DustNoiseDataMapper, D
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DustNoiseData getRealTimeDustNoiseData(Map<String, Object> map) {
|
public DustNoiseData getRealTimeDustNoiseData(Map<String, Object> map) {
|
||||||
DustNoiseData noiseData = null;
|
DustNoiseData noiseData = dustNoiseDataMapper.getRealTimeDustNoiseData(map);
|
||||||
|
if (noiseData != null) {
|
||||||
if (map.get("deviceId") == null) {
|
return dataBuilder(noiseData);
|
||||||
DustNoiseData nd = dustNoiseDataMapper.getRealTimeDustNoiseData(map);
|
|
||||||
if (nd != null) {
|
|
||||||
List<DustNoiseData> noiseDataList = Arrays.asList(nd);
|
|
||||||
for (DustNoiseData dustNoiseData : noiseDataList) {
|
|
||||||
DustNoiseData dataBuilder = dataBuilder(dustNoiseData);
|
|
||||||
if (noiseData == null) {
|
|
||||||
noiseData = dataBuilder;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
noiseData.setPm25(NumberUtil.div(NumberUtil.add(noiseData.getPm25(), dataBuilder.getPm25()), 2));
|
|
||||||
noiseData.setPm10(NumberUtil.div(NumberUtil.add(noiseData.getPm10(), dataBuilder.getPm10()), 2));
|
|
||||||
noiseData.setNoise(NumberUtil.div(NumberUtil.add(noiseData.getNoise(), dataBuilder.getNoise()), 2));
|
|
||||||
noiseData.setTemperature(NumberUtil.div(NumberUtil.add(noiseData.getTemperature(), dataBuilder.getTemperature()), 2));
|
|
||||||
noiseData.setHumidity(NumberUtil.div(NumberUtil.add(noiseData.getHumidity(), dataBuilder.getHumidity()), 2));
|
|
||||||
noiseData.setWindspeed(NumberUtil.div(NumberUtil.add(noiseData.getWindspeed(), dataBuilder.getWindspeed()), 2));
|
|
||||||
noiseData.setPressure(NumberUtil.div(NumberUtil.add(noiseData.getPressure(), dataBuilder.getPressure()), 2));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
noiseData = dustNoiseDataMapper.getRealTimeDustNoiseData(map);
|
|
||||||
if (noiseData != null) {
|
|
||||||
return dataBuilder(noiseData);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return noiseData;
|
return noiseData;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -96,7 +96,7 @@ public class RainDevServiceImpl extends ServiceImpl<RainDevMapper, RainDev> impl
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public RainDev queryById(String id) {
|
public RainDev queryById(String id) {
|
||||||
RainDev entity = getById(id);
|
RainDev entity = baseMapper.queryById(id);
|
||||||
if (entity == null) {
|
if (entity == null) {
|
||||||
throw new OpenAlertException("未找到对应实体");
|
throw new OpenAlertException("未找到对应实体");
|
||||||
}
|
}
|
||||||
|
|||||||
@ -87,10 +87,8 @@ public class RainRecordServiceImpl extends ServiceImpl<RainRecordMapper, RainRec
|
|||||||
throw new OpenAlertException("设备不存在");
|
throw new OpenAlertException("设备不存在");
|
||||||
}
|
}
|
||||||
if (Objects.equals(dev.getOnline(), 0)) {
|
if (Objects.equals(dev.getOnline(), 0)) {
|
||||||
rainDevMapper.selectOne(new LambdaUpdateWrapper<RainDev>()
|
dev.setLastUploadTime(new Date());
|
||||||
.set(RainDev::getOnline, 1)
|
rainDevMapper.updateById(dev);
|
||||||
.eq(RainDev::getDevSn, dev.getDevSn())
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
rainRecord.setId(null);
|
rainRecord.setId(null);
|
||||||
rainRecord.setProjectSn(dev.getProjectSn());
|
rainRecord.setProjectSn(dev.getProjectSn());
|
||||||
@ -138,6 +136,7 @@ public class RainRecordServiceImpl extends ServiceImpl<RainRecordMapper, RainRec
|
|||||||
return rainRecordMapper.selectOne(new LambdaQueryWrapper<RainRecord>()
|
return rainRecordMapper.selectOne(new LambdaQueryWrapper<RainRecord>()
|
||||||
.eq(StrUtil.isNotBlank(devSn), RainRecord::getDevSn, devSn)
|
.eq(StrUtil.isNotBlank(devSn), RainRecord::getDevSn, devSn)
|
||||||
.eq(StrUtil.isNotBlank(projectSn), RainRecord::getProjectSn, projectSn)
|
.eq(StrUtil.isNotBlank(projectSn), RainRecord::getProjectSn, projectSn)
|
||||||
|
.ge(RainRecord::getRecordTime, DateUtil.formatDateTime(DateUtil.beginOfDay(new Date())))
|
||||||
.last("order by record_time desc limit 1")
|
.last("order by record_time desc limit 1")
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -23,10 +23,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.apache.commons.collections.MapUtils;
|
import org.apache.commons.collections.MapUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
import springfox.documentation.annotations.ApiIgnore;
|
import springfox.documentation.annotations.ApiIgnore;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@ -45,11 +42,10 @@ import java.util.stream.Collectors;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
@Api(tags = "AI分析硬件设备报警记录")
|
@Api(tags = "AI分析硬件设备报警记录")
|
||||||
public class AiAnalyseHardWareAlarmRecordController {
|
public class AiAnalyseHardWareAlarmRecordController {
|
||||||
@Autowired
|
|
||||||
private IAiAnalyseHardWareAlarmRecordService aiAnalyseHardWareAlarmRecordService;
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
ISystemUserService systemUserService;
|
ISystemUserService systemUserService;
|
||||||
|
@Autowired
|
||||||
|
private IAiAnalyseHardWareAlarmRecordService aiAnalyseHardWareAlarmRecordService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分页列表查询
|
* 分页列表查询
|
||||||
@ -131,7 +127,7 @@ public class AiAnalyseHardWareAlarmRecordController {
|
|||||||
} else {
|
} else {
|
||||||
boolean ok = aiAnalyseHardWareAlarmRecordService.removeById(id);
|
boolean ok = aiAnalyseHardWareAlarmRecordService.removeById(id);
|
||||||
if (ok) {
|
if (ok) {
|
||||||
result.success("删除成功!");
|
Result.success("删除成功!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -308,11 +304,14 @@ public class AiAnalyseHardWareAlarmRecordController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@OperLog(operModul = "AI分析硬件设备报警记录管理", operType = "查询", operDesc = "设置误报忽略或已处置")
|
@OperLog(operModul = "AI分析硬件设备报警记录管理", operType = "查询", operDesc = "设置误报忽略或已处置")
|
||||||
@ApiOperation(value = "设置误报忽略不删除", notes = "设置误报忽略不删除", httpMethod = "POST")
|
@ApiOperation(value = "设置误报忽略或已处置", notes = "设置误报忽略或已处置", httpMethod = "POST")
|
||||||
@PostMapping(value = "/setFalsePositive")
|
@PostMapping(value = "/setFalsePositive")
|
||||||
public Result setFalsePositive(@RequestBody AiAnalyseHardWareAlarmRecord taskProgressMaterialRel) {
|
public Result setFalsePositive(@RequestBody AiAnalyseHardWareAlarmRecord taskProgressMaterialRel) {
|
||||||
aiAnalyseHardWareAlarmRecordService.setFalsePositive(taskProgressMaterialRel);
|
aiAnalyseHardWareAlarmRecordService.setFalsePositive(taskProgressMaterialRel);
|
||||||
return Result.ok();
|
return Result.ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,6 +13,7 @@ import org.apache.ibatis.annotations.MapKey;
|
|||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@ -63,4 +64,12 @@ public interface AiAnalyseHardWareAlarmRecordMapper extends BaseMapper<AiAnalyse
|
|||||||
|
|
||||||
int batchInsert(@Param("list") List<AiAnalyseHardWareAlarmRecord> list);
|
int batchInsert(@Param("list") List<AiAnalyseHardWareAlarmRecord> list);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询项目子账号的可查看企业的最新一条ai记录
|
||||||
|
*
|
||||||
|
* @param map
|
||||||
|
* @return
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
AiAnalyseHardWareAlarmRecord getAllocateNewestRecord(HashMap<String, Object> map);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -577,4 +577,18 @@
|
|||||||
#{item.handleDone,jdbcType=INTEGER})
|
#{item.handleDone,jdbcType=INTEGER})
|
||||||
</foreach>
|
</foreach>
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
|
<select id="getAllocateNewestRecord" resultMap="queryAiAnalyseHardWareAlarmPageListTwoRm">
|
||||||
|
SELECT a.*
|
||||||
|
FROM ai_analyse_hard_ware_alarm_record a
|
||||||
|
LEFT JOIN ai_analyse_hard_ware_record r on r.hardware_id=a.hardware_id
|
||||||
|
LEFT JOIN quality_region_to_ai_analyse_hard AS qrtaah ON qrtaah.ai_analyse_hard_ware_record_id = r.id
|
||||||
|
join quality_region_to_enterprise qrte on qrte.quality_region_id=qrtaah.quality_region_id
|
||||||
|
WHERE qrte.enterprise_id in
|
||||||
|
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
|
||||||
|
#{item}
|
||||||
|
</foreach>
|
||||||
|
order by a.create_time desc
|
||||||
|
limit 1
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@ -65,4 +65,5 @@ public interface IAiAnalyseHardWareAlarmRecordService extends IService<AiAnalyse
|
|||||||
|
|
||||||
void setFalsePositive(AiAnalyseHardWareAlarmRecord taskProgressMaterialRel);
|
void setFalsePositive(AiAnalyseHardWareAlarmRecord taskProgressMaterialRel);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -47,6 +47,7 @@ import com.zhgd.xmgl.modules.video.mapper.WorkerInfoToAiAnalyseHardWareAlarmReco
|
|||||||
import com.zhgd.xmgl.modules.video.service.IAiAnalyseHardWareAlarmRecordService;
|
import com.zhgd.xmgl.modules.video.service.IAiAnalyseHardWareAlarmRecordService;
|
||||||
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
|
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
|
||||||
import com.zhgd.xmgl.modules.worker.mapper.WorkerInfoMapper;
|
import com.zhgd.xmgl.modules.worker.mapper.WorkerInfoMapper;
|
||||||
|
import com.zhgd.xmgl.modules.worker.service.impl.UserEnterpriseServiceImpl;
|
||||||
import com.zhgd.xmgl.modules.worker.service.impl.WorkerInfoServiceImpl;
|
import com.zhgd.xmgl.modules.worker.service.impl.WorkerInfoServiceImpl;
|
||||||
import com.zhgd.xmgl.modules.xz.entity.XzAiDeductRule;
|
import com.zhgd.xmgl.modules.xz.entity.XzAiDeductRule;
|
||||||
import com.zhgd.xmgl.modules.xz.entity.XzDeductScoreRecord;
|
import com.zhgd.xmgl.modules.xz.entity.XzDeductScoreRecord;
|
||||||
@ -121,6 +122,9 @@ public class AiAnalyseHardWareAlarmRecordServiceImpl extends ServiceImpl<AiAnaly
|
|||||||
private FileStorageService fileStorageService;
|
private FileStorageService fileStorageService;
|
||||||
@Resource
|
@Resource
|
||||||
private XzAiDeductRuleServiceImpl xzAiDeductRuleService;
|
private XzAiDeductRuleServiceImpl xzAiDeductRuleService;
|
||||||
|
@Lazy
|
||||||
|
@Autowired
|
||||||
|
private UserEnterpriseServiceImpl userEnterpriseService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IPage<AiAnalyseHardWareAlarmRecord> queryAiAnalyseHardWareAlarmPageList(Map<String, Object> map) {
|
public IPage<AiAnalyseHardWareAlarmRecord> queryAiAnalyseHardWareAlarmPageList(Map<String, Object> map) {
|
||||||
|
|||||||
@ -47,6 +47,7 @@ public class EnterpriseBadRecordController {
|
|||||||
Result<List<EnterpriseBadRecord>> result = new Result<List<EnterpriseBadRecord>>();
|
Result<List<EnterpriseBadRecord>> result = new Result<List<EnterpriseBadRecord>>();
|
||||||
QueryWrapper<EnterpriseBadRecord> queryWrapper=new QueryWrapper<>();
|
QueryWrapper<EnterpriseBadRecord> queryWrapper=new QueryWrapper<>();
|
||||||
queryWrapper.lambda().eq(EnterpriseBadRecord::getEnterpriseId, MapUtils.getString(map,"enterpriseId"));
|
queryWrapper.lambda().eq(EnterpriseBadRecord::getEnterpriseId, MapUtils.getString(map,"enterpriseId"));
|
||||||
|
queryWrapper.lambda().orderByDesc(EnterpriseBadRecord::getAriseTime);
|
||||||
List<EnterpriseBadRecord> pageList = enterpriseBadRecordService.list(queryWrapper);
|
List<EnterpriseBadRecord> pageList = enterpriseBadRecordService.list(queryWrapper);
|
||||||
result.setSuccess(true);
|
result.setSuccess(true);
|
||||||
result.setResult(pageList);
|
result.setResult(pageList);
|
||||||
|
|||||||
@ -0,0 +1,86 @@
|
|||||||
|
package com.zhgd.xmgl.modules.xz.controller;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.zhgd.jeecg.common.api.vo.Result;
|
||||||
|
import com.zhgd.jeecg.common.system.query.QueryGenerator;
|
||||||
|
import com.zhgd.xmgl.constant.Cts;
|
||||||
|
import com.zhgd.xmgl.modules.video.entity.AiAnalyseHardWareAlarmRecord;
|
||||||
|
import com.zhgd.xmgl.modules.video.mapper.AiAnalyseHardWareAlarmRecordMapper;
|
||||||
|
import com.zhgd.xmgl.modules.video.service.IAiAnalyseHardWareAlarmRecordService;
|
||||||
|
import com.zhgd.xmgl.modules.worker.service.impl.UserEnterpriseServiceImpl;
|
||||||
|
import com.zhgd.xmgl.modules.xz.emergency.entity.XzEmergencyRecord;
|
||||||
|
import com.zhgd.xmgl.modules.xz.emergency.mapper.XzEmergencyRecordMapper;
|
||||||
|
import com.zhgd.xmgl.security.util.SecurityUtils;
|
||||||
|
import com.zhgd.xmgl.util.PageUtil;
|
||||||
|
import com.zhgd.xmgl.util.RefUtil;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.collections.MapUtils;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.context.annotation.Lazy;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping(value = {"/xmgl/agjtLiveScreen"})
|
||||||
|
@Slf4j
|
||||||
|
@Api(tags = "星纵-现场大屏")
|
||||||
|
public class XzAgjtLiveScreenController {
|
||||||
|
@Autowired
|
||||||
|
IAiAnalyseHardWareAlarmRecordService aiAnalyseHardWareAlarmRecordService;
|
||||||
|
@Lazy
|
||||||
|
@Autowired
|
||||||
|
AiAnalyseHardWareAlarmRecordMapper aiAnalyseHardWareAlarmRecordMapper;
|
||||||
|
@Lazy
|
||||||
|
@Autowired
|
||||||
|
private UserEnterpriseServiceImpl userEnterpriseService;
|
||||||
|
@Autowired
|
||||||
|
private XzEmergencyRecordMapper xzEmergencyRecordMapper;
|
||||||
|
|
||||||
|
@ApiOperation(value = "查询项目子账号的可查看企业的最新一条ai记录", notes = "查询项目子账号的可查看企业的最新一条ai记录", httpMethod = "GET")
|
||||||
|
@GetMapping(value = "/getAllocateNewestRecord")
|
||||||
|
public Result<AiAnalyseHardWareAlarmRecord> getAllocateNewestRecord() {
|
||||||
|
Integer accountType = SecurityUtils.getUser().getAccountType();
|
||||||
|
if (!Objects.equals(accountType, 6)) {
|
||||||
|
return Result.ok();
|
||||||
|
}
|
||||||
|
HashMap<String, Object> map = new HashMap<>(16);
|
||||||
|
List<String> enterpriseIds = userEnterpriseService.getEnterpriseIdsIfSubProject();
|
||||||
|
map.put("list", enterpriseIds);
|
||||||
|
map.put(Cts.IGNORE_DATA_SCOPE, Cts.IGNORE_DATA_SCOPE);
|
||||||
|
return Result.success(aiAnalyseHardWareAlarmRecordMapper.getAllocateNewestRecord(map));
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "分页查询项目子账号的可查看企业的星纵-应急-处置台账信息记录", notes = "分页查询项目子账号的可查看企业的星纵-应急-处置台账信息记录", httpMethod = "GET")
|
||||||
|
@GetMapping(value = "/getXzEmergencyRecordPage")
|
||||||
|
public Result<IPage<XzEmergencyRecord>> getXzEmergencyRecordPage() {
|
||||||
|
HashMap<String, Object> paramMap = new HashMap<>(16);
|
||||||
|
String alias = "t.";
|
||||||
|
QueryWrapper<XzEmergencyRecord> queryWrapper = QueryGenerator.initPageQueryWrapper(XzEmergencyRecord.class, paramMap, alias);
|
||||||
|
String enterpriseId = MapUtils.getString(paramMap, "enterpriseId");
|
||||||
|
String alarmPersonName = MapUtils.getString(paramMap, "alarmPersonName");
|
||||||
|
String inDispositionStatus = MapUtils.getString(paramMap, "inDispositionStatus");
|
||||||
|
if (StrUtil.isNotBlank(enterpriseId)) {
|
||||||
|
queryWrapper.eq("ei.id", enterpriseId);
|
||||||
|
}
|
||||||
|
if (StrUtil.isNotBlank(alarmPersonName)) {
|
||||||
|
queryWrapper.like("wi.worker_name", alarmPersonName);
|
||||||
|
}
|
||||||
|
if (StrUtil.isNotBlank(inDispositionStatus)) {
|
||||||
|
queryWrapper.in(alias + "disposition_status", StrUtil.split(inDispositionStatus, ","));
|
||||||
|
}
|
||||||
|
queryWrapper.orderByDesc(alias + RefUtil.fieldNameUlc(XzEmergencyRecord::getAlarmTime));
|
||||||
|
Page<XzEmergencyRecord> page = PageUtil.getPage(paramMap);
|
||||||
|
IPage<XzEmergencyRecord> pageList = xzEmergencyRecordMapper.queryList(page, queryWrapper);
|
||||||
|
return Result.success(pageList);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -98,7 +98,7 @@ public class XzEmergencyRecordServiceImpl extends ServiceImpl<XzEmergencyRecordM
|
|||||||
String inDispositionStatus = MapUtils.getString(paramMap, "inDispositionStatus");
|
String inDispositionStatus = MapUtils.getString(paramMap, "inDispositionStatus");
|
||||||
String projectSn = MapUtils.getString(paramMap, "projectSn");
|
String projectSn = MapUtils.getString(paramMap, "projectSn");
|
||||||
//项目子账号只能看到自己的负责的企业
|
//项目子账号只能看到自己的负责的企业
|
||||||
querySelfEnterpriseIfSub(queryWrapper);
|
this.querySelfEnterpriseIfSub(queryWrapper);
|
||||||
if (StrUtil.isNotBlank(enterpriseId)) {
|
if (StrUtil.isNotBlank(enterpriseId)) {
|
||||||
queryWrapper.eq("ei.id", enterpriseId);
|
queryWrapper.eq("ei.id", enterpriseId);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -25,10 +25,7 @@ import org.springframework.web.bind.annotation.RestController;
|
|||||||
import springfox.documentation.annotations.ApiIgnore;
|
import springfox.documentation.annotations.ApiIgnore;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/xmgl/xzSpecial")
|
@RequestMapping("/xmgl/xzSpecial")
|
||||||
@ -155,7 +152,7 @@ public class CountApiController {
|
|||||||
type.setRunning(type.getNum() - type.getComplete());
|
type.setRunning(type.getNum() - type.getComplete());
|
||||||
running += type.getRunning();
|
running += type.getRunning();
|
||||||
complete += type.getComplete();
|
complete += type.getComplete();
|
||||||
type.setRatio(NumberUtils.occupyRate(type.getNum(), sum, 2));
|
type.setRatio(Optional.ofNullable(NumberUtils.occupyRate(type.getNum(), sum, 2)).orElse(0D));
|
||||||
}
|
}
|
||||||
CountSpecialByFinalStatusVo rtVo = new CountSpecialByFinalStatusVo();
|
CountSpecialByFinalStatusVo rtVo = new CountSpecialByFinalStatusVo();
|
||||||
CountSpecialByFinalStatusVo.Total total = new CountSpecialByFinalStatusVo.Total();
|
CountSpecialByFinalStatusVo.Total total = new CountSpecialByFinalStatusVo.Total();
|
||||||
|
|||||||
@ -1,46 +0,0 @@
|
|||||||
package com.zhgd.xmgl.task;
|
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
||||||
import com.zhgd.xmgl.modules.environment.entity.RainDev;
|
|
||||||
import com.zhgd.xmgl.modules.environment.mapper.RainDevMapper;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import net.javacrumbs.shedlock.core.SchedulerLock;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.context.annotation.Lazy;
|
|
||||||
import org.springframework.scheduling.annotation.Scheduled;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@Slf4j
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("/xmgl/task")
|
|
||||||
public class RainDevTask {
|
|
||||||
@Lazy
|
|
||||||
@Autowired
|
|
||||||
private RainDevMapper rainDevMapper;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 定时更新设备离线
|
|
||||||
*/
|
|
||||||
@Scheduled(cron = "0 0/1 * * * ?")
|
|
||||||
@SchedulerLock(name = "updateOffline")
|
|
||||||
public void updateOffline() {
|
|
||||||
List<RainDev> rainDevs = rainDevMapper.selectList(new LambdaQueryWrapper<RainDev>()
|
|
||||||
.le(RainDev::getLastUploadTime, DateUtil.formatDateTime(DateUtil.offsetMinute(new Date(), -30)))
|
|
||||||
.eq(RainDev::getOnline, 1)
|
|
||||||
);
|
|
||||||
for (RainDev dev : rainDevs) {
|
|
||||||
rainDevMapper.selectOne(new LambdaUpdateWrapper<RainDev>()
|
|
||||||
.set(RainDev::getOnline, 0)
|
|
||||||
.eq(RainDev::getDevSn, dev.getDevSn())
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -11,6 +11,7 @@ import com.zhgd.xmgl.enums.ParamEnum;
|
|||||||
import com.zhgd.xmgl.modules.environment.entity.RainAlarm;
|
import com.zhgd.xmgl.modules.environment.entity.RainAlarm;
|
||||||
import com.zhgd.xmgl.modules.environment.entity.RainDev;
|
import com.zhgd.xmgl.modules.environment.entity.RainDev;
|
||||||
import com.zhgd.xmgl.modules.environment.entity.RainRecord;
|
import com.zhgd.xmgl.modules.environment.entity.RainRecord;
|
||||||
|
import com.zhgd.xmgl.modules.environment.mapper.RainDevMapper;
|
||||||
import com.zhgd.xmgl.modules.environment.service.IRainAlarmService;
|
import com.zhgd.xmgl.modules.environment.service.IRainAlarmService;
|
||||||
import com.zhgd.xmgl.modules.environment.service.IRainDevService;
|
import com.zhgd.xmgl.modules.environment.service.IRainDevService;
|
||||||
import com.zhgd.xmgl.modules.environment.service.IRainRecordService;
|
import com.zhgd.xmgl.modules.environment.service.IRainRecordService;
|
||||||
@ -53,6 +54,9 @@ public class RainTask {
|
|||||||
@Lazy
|
@Lazy
|
||||||
@Autowired
|
@Autowired
|
||||||
private RedisRepository redisRepository;
|
private RedisRepository redisRepository;
|
||||||
|
@Lazy
|
||||||
|
@Autowired
|
||||||
|
private RainDevMapper rainDevMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取实时数据
|
* 获取实时数据
|
||||||
@ -90,35 +94,62 @@ public class RainTask {
|
|||||||
JSONObject dataJo = datas.getJSONObject(i);
|
JSONObject dataJo = datas.getJSONObject(i);
|
||||||
JSONArray dataItemJa = dataJo.getJSONArray("dataItem");
|
JSONArray dataItemJa = dataJo.getJSONArray("dataItem");
|
||||||
String deviceAddr = dataJo.getString("deviceAddr");
|
String deviceAddr = dataJo.getString("deviceAddr");
|
||||||
|
//normal:正常
|
||||||
|
//alarming:报警
|
||||||
|
//preAlarming:预警
|
||||||
|
//offline:离线
|
||||||
|
String deviceStatus = dataJo.getString("deviceStatus");
|
||||||
RainRecord record = new RainRecord();
|
RainRecord record = new RainRecord();
|
||||||
for (int j = 0; j < dataItemJa.size(); j++) {
|
RainDev dev = devSnMap.get(deviceAddr);
|
||||||
JSONObject itemJo = dataItemJa.getJSONObject(j);
|
if (CollUtil.isNotEmpty(dataItemJa)) {
|
||||||
Integer nodeId = itemJo.getInteger("nodeId");
|
for (int j = 0; j < dataItemJa.size(); j++) {
|
||||||
JSONArray registerItemJa = itemJo.getJSONArray("registerItem");
|
JSONObject itemJo = dataItemJa.getJSONObject(j);
|
||||||
if (nodeId == 1) {
|
Integer nodeId = itemJo.getInteger("nodeId");
|
||||||
//风力、风速
|
JSONArray registerItemJa = itemJo.getJSONArray("registerItem");
|
||||||
record.setWindForce(getDouble(registerItemJa, 0));
|
if (nodeId == 1) {
|
||||||
record.setWindSpeed(getDouble(registerItemJa, 1));
|
//风力、风速
|
||||||
} else if (nodeId == 2) {
|
record.setWindForce(getDouble(registerItemJa, 0));
|
||||||
record.setWindDirection(getString(registerItemJa, 0));
|
record.setWindSpeed(getDouble(registerItemJa, 1));
|
||||||
} else if (nodeId == 20) {
|
} else if (nodeId == 2) {
|
||||||
record.setAccumulatedRainfall(getDouble(registerItemJa, 0));
|
record.setWindDirection(getString(registerItemJa, 0));
|
||||||
} else if (nodeId == 21) {
|
} else if (nodeId == 20) {
|
||||||
record.setInstantaneousRainfall(getDouble(registerItemJa, 0));
|
record.setAccumulatedRainfall(getDouble(registerItemJa, 0));
|
||||||
record.setCurrentRainfall(getDouble(registerItemJa, 1));
|
} else if (nodeId == 21) {
|
||||||
} else if (nodeId == 22) {
|
record.setInstantaneousRainfall(getDouble(registerItemJa, 0));
|
||||||
record.setDailyRainfall(getDouble(registerItemJa, 0));
|
record.setCurrentRainfall(getDouble(registerItemJa, 1));
|
||||||
} else if (nodeId == 11) {
|
} else if (nodeId == 22) {
|
||||||
record.setAirTemperature(getDouble(registerItemJa, 0));
|
record.setDailyRainfall(getDouble(registerItemJa, 0));
|
||||||
record.setAirHumidity(getDouble(registerItemJa, 1));
|
} else if (nodeId == 11) {
|
||||||
} else if (nodeId == 14) {
|
record.setAirTemperature(getDouble(registerItemJa, 0));
|
||||||
record.setAtmosphericPressure(getDouble(registerItemJa, 0));
|
record.setAirHumidity(getDouble(registerItemJa, 1));
|
||||||
|
} else if (nodeId == 14) {
|
||||||
|
record.setAtmosphericPressure(getDouble(registerItemJa, 0));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
record.setRecordTime(new Date(dataJo.getLong("timeStamp")));
|
||||||
|
record.setDevSn(deviceAddr);
|
||||||
|
record.setProjectSn(dev.getProjectSn());
|
||||||
|
records.add(record);
|
||||||
|
dev.setLastUploadTime(new Date());
|
||||||
|
}
|
||||||
|
|
||||||
|
//更新在线离线
|
||||||
|
String offline = "offline";
|
||||||
|
if (offline.equals(deviceStatus)) {
|
||||||
|
if (dev != null) {
|
||||||
|
if (DateUtil.compare(dev.getLastUploadTime(), DateUtil.offsetMinute(new Date(), -30)) >= 0) {
|
||||||
|
dev.setLastUploadTime(DateUtil.offsetMinute(new Date(), -60));
|
||||||
|
rainDevMapper.updateById(dev);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (dev != null) {
|
||||||
|
if (DateUtil.compare(dev.getLastUploadTime(), DateUtil.offsetMinute(new Date(), -30)) < 0) {
|
||||||
|
dev.setLastUploadTime(new Date());
|
||||||
|
rainDevMapper.updateById(dev);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
record.setRecordTime(new Date(dataJo.getLong("timeStamp")));
|
|
||||||
record.setDevSn(deviceAddr);
|
|
||||||
record.setProjectSn(devSnMap.get(deviceAddr).getProjectSn());
|
|
||||||
records.add(record);
|
|
||||||
}
|
}
|
||||||
rainRecordService.saveBatch(records);
|
rainRecordService.saveBatch(records);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user