Merge branch 'guoshengxiong' into guoshengxiongtemp

This commit is contained in:
guoshengxiong 2024-07-03 10:11:14 +08:00
commit b5f945faa5
22 changed files with 221 additions and 132 deletions

View File

@ -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;
} }

View File

@ -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";
} }

View File

@ -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)

View File

@ -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"),

View File

@ -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;
} }

View File

@ -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);
} }

View File

@ -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>

View File

@ -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)&lt;=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)&lt;=30 then 1 else 0 end)),0) as online
from rain_dev as t
where t.id = #{id}
</select>
</mapper> </mapper>

View File

@ -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,33 +74,10 @@ 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 (map.get("deviceId") == null) {
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) { if (noiseData != null) {
return dataBuilder(noiseData); return dataBuilder(noiseData);
} }
}
return noiseData; return noiseData;
} }

View File

@ -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("未找到对应实体");
} }

View File

@ -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")
); );
} }

View File

@ -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();
} }
} }

View File

@ -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);
} }

View File

@ -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>

View File

@ -65,4 +65,5 @@ public interface IAiAnalyseHardWareAlarmRecordService extends IService<AiAnalyse
void setFalsePositive(AiAnalyseHardWareAlarmRecord taskProgressMaterialRel); void setFalsePositive(AiAnalyseHardWareAlarmRecord taskProgressMaterialRel);
} }

View File

@ -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) {

View File

@ -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);

View File

@ -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);
}
}

View File

@ -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);
} }

View File

@ -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();

View File

@ -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())
);
}
}
}

View File

@ -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,7 +94,14 @@ 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();
RainDev dev = devSnMap.get(deviceAddr);
if (CollUtil.isNotEmpty(dataItemJa)) {
for (int j = 0; j < dataItemJa.size(); j++) { for (int j = 0; j < dataItemJa.size(); j++) {
JSONObject itemJo = dataItemJa.getJSONObject(j); JSONObject itemJo = dataItemJa.getJSONObject(j);
Integer nodeId = itemJo.getInteger("nodeId"); Integer nodeId = itemJo.getInteger("nodeId");
@ -117,8 +128,28 @@ public class RainTask {
} }
record.setRecordTime(new Date(dataJo.getLong("timeStamp"))); record.setRecordTime(new Date(dataJo.getLong("timeStamp")));
record.setDevSn(deviceAddr); record.setDevSn(deviceAddr);
record.setProjectSn(devSnMap.get(deviceAddr).getProjectSn()); record.setProjectSn(dev.getProjectSn());
records.add(record); 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);
}
}
}
} }
rainRecordService.saveBatch(records); rainRecordService.saveBatch(records);
} }