Merge remote-tracking branch 'origin/dunhuan_jdk8' into dunhuang
# Conflicts: # src/main/java/com/zhgd/xmgl/modules/video/service/impl/AiAnalyseHardWareAlarmRecordServiceImpl.java
This commit is contained in:
commit
91eca09bcd
@ -236,6 +236,7 @@ public class CompanyController {
|
|||||||
@ApiImplicitParam(name = "videoType", value = "查询类型,0无视频,1有视频", paramType = "body", required = true, dataType = "String"),
|
@ApiImplicitParam(name = "videoType", value = "查询类型,0无视频,1有视频", paramType = "body", required = true, dataType = "String"),
|
||||||
@ApiImplicitParam(name = "standardType", value = "是否查询标养室,0否,1是", paramType = "body", required = true, dataType = "String"),
|
@ApiImplicitParam(name = "standardType", value = "是否查询标养室,0否,1是", paramType = "body", required = true, dataType = "String"),
|
||||||
@ApiImplicitParam(name = "projectType", value = "是否展示,0否,1是", paramType = "body", required = true, dataType = "String"),
|
@ApiImplicitParam(name = "projectType", value = "是否展示,0否,1是", paramType = "body", required = true, dataType = "String"),
|
||||||
|
@ApiImplicitParam(name = "showVideoNum", value = "是否展示(在线)监控数量,0否,1是", paramType = "body", required = false, dataType = "String"),
|
||||||
})
|
})
|
||||||
@PostMapping("/getComapnyStatisticsList")
|
@PostMapping("/getComapnyStatisticsList")
|
||||||
@PreAuthorize("@perm.hasSnAccess(#map['sn'])")
|
@PreAuthorize("@perm.hasSnAccess(#map['sn'])")
|
||||||
|
|||||||
@ -0,0 +1,29 @@
|
|||||||
|
package com.zhgd.xmgl.modules.basicdata.entity.bo;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class CompanyUsersByProjectSnBo {
|
||||||
|
/**
|
||||||
|
*总企业用户ids(多个,分割)
|
||||||
|
*/
|
||||||
|
@ApiModelProperty("总企业用户ids(多个,分割)")
|
||||||
|
private String uids0;
|
||||||
|
/**
|
||||||
|
*一级企业用户ids(多个,分割)
|
||||||
|
*/
|
||||||
|
@ApiModelProperty("一级企业用户ids(多个,分割)")
|
||||||
|
private String uids1;
|
||||||
|
/**
|
||||||
|
*二级企业用户ids(多个,分割)
|
||||||
|
*/
|
||||||
|
@ApiModelProperty("二级企业用户ids(多个,分割)")
|
||||||
|
private String uids2;
|
||||||
|
/**
|
||||||
|
*三级企业用户ids(多个,分割)
|
||||||
|
*/
|
||||||
|
@ApiModelProperty("三级企业用户ids(多个,分割)")
|
||||||
|
private String uids3;
|
||||||
|
|
||||||
|
}
|
||||||
@ -8,6 +8,7 @@ import com.wflow.bean.do_.UserDeptDo;
|
|||||||
import com.wflow.bean.vo.OrgTreeVo;
|
import com.wflow.bean.vo.OrgTreeVo;
|
||||||
import com.zhgd.annotation.DataScope;
|
import com.zhgd.annotation.DataScope;
|
||||||
import com.zhgd.xmgl.modules.basicdata.entity.SystemUser;
|
import com.zhgd.xmgl.modules.basicdata.entity.SystemUser;
|
||||||
|
import com.zhgd.xmgl.modules.basicdata.entity.bo.CompanyUsersByProjectSnBo;
|
||||||
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 org.apache.ibatis.annotations.Select;
|
import org.apache.ibatis.annotations.Select;
|
||||||
@ -272,4 +273,6 @@ public interface SystemUserMapper extends BaseMapper<SystemUser> {
|
|||||||
*/
|
*/
|
||||||
@DataScope(includeTable = {"system_user"})
|
@DataScope(includeTable = {"system_user"})
|
||||||
void updateRealNameFromWorker(@Param("workerId") Long workerId, @Param("workerName") String workerName);
|
void updateRealNameFromWorker(@Param("workerId") Long workerId, @Param("workerName") String workerName);
|
||||||
|
|
||||||
|
CompanyUsersByProjectSnBo getCompanyUsersByProjectSn(String projectSn);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -388,4 +388,18 @@
|
|||||||
<update id="updateRealNameFromWorker">
|
<update id="updateRealNameFromWorker">
|
||||||
update system_user set real_name=#{workerName} where worker_id = #{workerId}
|
update system_user set real_name=#{workerName} where worker_id = #{workerId}
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
|
<select id="getCompanyUsersByProjectSn" resultType="com.zhgd.xmgl.modules.basicdata.entity.bo.CompanyUsersByProjectSnBo">
|
||||||
|
SELECT GROUP_CONCAT(DISTINCT su0.user_id) uids0,GROUP_CONCAT(DISTINCT su1.user_id) uids1,GROUP_CONCAT(DISTINCT su2.user_id) uids2,GROUP_CONCAT(DISTINCT su3.user_id) uids3
|
||||||
|
FROM company a
|
||||||
|
JOIN company b ON b.parent_id = a.company_id
|
||||||
|
JOIN company cp ON b.company_id = cp.parent_id
|
||||||
|
JOIN project c ON cp.company_sn = c.company_sn
|
||||||
|
JOIN company top on top.company_sn=a.headquarters_sn
|
||||||
|
left join system_user su0 on su0.sn=top.company_sn and su0.account_type=2
|
||||||
|
left join system_user su1 on su1.sn=a.company_sn and su1.account_type=3
|
||||||
|
left join system_user su2 on su2.sn=b.company_sn and su2.account_type=4
|
||||||
|
left join system_user su3 on su3.sn=cp.company_sn and su3.account_type=7
|
||||||
|
WHERE c.project_sn=#{projectSn}
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@ -388,4 +388,6 @@ public interface ISystemUserService extends IService<SystemUser> {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
Map<String, Object> verifyLogin(Map<String, Object> map);
|
Map<String, Object> verifyLogin(Map<String, Object> map);
|
||||||
|
|
||||||
|
List<Long> getCompanyUserIdsByProjectSn(String projectSn);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,6 +2,7 @@ package com.zhgd.xmgl.modules.basicdata.service.impl;
|
|||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.convert.Convert;
|
||||||
import cn.hutool.core.date.DateTime;
|
import cn.hutool.core.date.DateTime;
|
||||||
import cn.hutool.core.date.DateUnit;
|
import cn.hutool.core.date.DateUnit;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
@ -357,6 +358,7 @@ public class CompanyServiceImpl extends ServiceImpl<CompanyMapper, Company> impl
|
|||||||
secondComapnyList = getGroupStatisticsCompany(secondComapnyList, childComapnyList);
|
secondComapnyList = getGroupStatisticsCompany(secondComapnyList, childComapnyList);
|
||||||
fistComapnyList = getGroupStatisticsCompany(fistComapnyList, secondComapnyList);
|
fistComapnyList = getGroupStatisticsCompany(fistComapnyList, secondComapnyList);
|
||||||
fistComapnyList = filterCompanyByProject(fistComapnyList, map);
|
fistComapnyList = filterCompanyByProject(fistComapnyList, map);
|
||||||
|
addVideoTotalAndOnlineNum(fistComapnyList, type);
|
||||||
data.put("companyList", fistComapnyList);
|
data.put("companyList", fistComapnyList);
|
||||||
addSnForTree(data);
|
addSnForTree(data);
|
||||||
} else if (Objects.equals(tempCompany.getCompanyType(), CompanyTypeEnum.REGIONS.getValue())) {
|
} else if (Objects.equals(tempCompany.getCompanyType(), CompanyTypeEnum.REGIONS.getValue())) {
|
||||||
@ -373,6 +375,7 @@ public class CompanyServiceImpl extends ServiceImpl<CompanyMapper, Company> impl
|
|||||||
}
|
}
|
||||||
fistComapnyList = getGroupStatisticsCompany(fistComapnyList, companyList);
|
fistComapnyList = getGroupStatisticsCompany(fistComapnyList, companyList);
|
||||||
fistComapnyList = filterCompanyByProject(fistComapnyList, map);
|
fistComapnyList = filterCompanyByProject(fistComapnyList, map);
|
||||||
|
addVideoTotalAndOnlineNum(fistComapnyList, type);
|
||||||
data.put("companyList", fistComapnyList);
|
data.put("companyList", fistComapnyList);
|
||||||
} else if (Objects.equals(tempCompany.getCompanyType(), CompanyTypeEnum.CITIES.getValue())) {
|
} else if (Objects.equals(tempCompany.getCompanyType(), CompanyTypeEnum.CITIES.getValue())) {
|
||||||
Company parentCompany = companyMapper.selectById(tempCompany.getParentId());
|
Company parentCompany = companyMapper.selectById(tempCompany.getParentId());
|
||||||
@ -387,6 +390,7 @@ public class CompanyServiceImpl extends ServiceImpl<CompanyMapper, Company> impl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
companyList = filterCompanyByProject(companyList, map);
|
companyList = filterCompanyByProject(companyList, map);
|
||||||
|
addVideoTotalAndOnlineNum(companyList, type);
|
||||||
data.put("companyList", companyList);
|
data.put("companyList", companyList);
|
||||||
} else {
|
} else {
|
||||||
Company parentCompany = companyMapper.selectById(tempCompany.getParentId());
|
Company parentCompany = companyMapper.selectById(tempCompany.getParentId());
|
||||||
@ -396,6 +400,7 @@ public class CompanyServiceImpl extends ServiceImpl<CompanyMapper, Company> impl
|
|||||||
data.put("firstCompany", firstCompany);
|
data.put("firstCompany", firstCompany);
|
||||||
map.put("companyType", "5");
|
map.put("companyType", "5");
|
||||||
List<EntityMap> projectList = getProjectEntityMaps(map, type, standardType);
|
List<EntityMap> projectList = getProjectEntityMaps(map, type, standardType);
|
||||||
|
addVideoTotalAndOnlineNum(projectList, type);
|
||||||
data.put("projectList", projectList);
|
data.put("projectList", projectList);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -410,6 +415,24 @@ public class CompanyServiceImpl extends ServiceImpl<CompanyMapper, Company> impl
|
|||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加在线离线数量
|
||||||
|
*
|
||||||
|
* @param fistComapnyList
|
||||||
|
* @param type
|
||||||
|
*/
|
||||||
|
private void addVideoTotalAndOnlineNum(List<EntityMap> fistComapnyList, Integer type) {
|
||||||
|
if (type == 1) {
|
||||||
|
for (int i = 0; i < fistComapnyList.size(); i++) {
|
||||||
|
EntityMap entityMap = fistComapnyList.get(i);
|
||||||
|
String childName = "list";
|
||||||
|
JSONObject jsonObject = BeanUtil.toBean(entityMap, JSONObject.class);
|
||||||
|
Map<String, Integer> integerMap = VideoItemServiceImpl.getTotalAndOnlineNum(jsonObject, childName);
|
||||||
|
entityMap.putAll(integerMap);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private List<EntityMap> getChildCompanyStatisticsList(Map<String, Object> map, Integer type, Integer standardType, List<EntityMap> childComapnyList) {
|
private List<EntityMap> getChildCompanyStatisticsList(Map<String, Object> map, Integer type, Integer standardType, List<EntityMap> childComapnyList) {
|
||||||
List<EntityMap> projectList = getProjectEntityMaps(map, type, standardType);
|
List<EntityMap> projectList = getProjectEntityMaps(map, type, standardType);
|
||||||
childComapnyList = getGroupStatisticsProject(childComapnyList, projectList);
|
childComapnyList = getGroupStatisticsProject(childComapnyList, projectList);
|
||||||
@ -430,6 +453,20 @@ public class CompanyServiceImpl extends ServiceImpl<CompanyMapper, Company> impl
|
|||||||
List<Map<String, Object>> standardList = standardDevMapper.selectProjecDevAlarmCount(map);
|
List<Map<String, Object>> standardList = standardDevMapper.selectProjecDevAlarmCount(map);
|
||||||
projectList = addProjectStandardData(projectList, standardList);
|
projectList = addProjectStandardData(projectList, standardList);
|
||||||
}
|
}
|
||||||
|
if (Objects.equals(MapUtils.getInteger(map, "showVideoNum"), 1)) {
|
||||||
|
List<EntityMap> videoList = projectMapper.selectVideoList(map);
|
||||||
|
Map<String, List<EntityMap>> projectSn2VideosMap = videoList.stream().collect(Collectors.groupingBy(entityMap -> Convert.toStr(entityMap.get("projectSn"))));
|
||||||
|
for (EntityMap projectMap : projectList) {
|
||||||
|
List<EntityMap> mapList = projectSn2VideosMap.get(projectMap.get("projectSn"));
|
||||||
|
Integer videoNum = Optional.ofNullable(mapList).map(m -> m.size()).orElse(0);
|
||||||
|
Long onlineVideoNum = 0L;
|
||||||
|
if (mapList != null) {
|
||||||
|
onlineVideoNum = mapList.stream().filter(entityMap -> Objects.equals(entityMap.get("deviceState"), 1)).count();
|
||||||
|
}
|
||||||
|
projectMap.put("video_num", videoNum);
|
||||||
|
projectMap.put("online_video_num", onlineVideoNum);
|
||||||
|
}
|
||||||
|
}
|
||||||
return projectList;
|
return projectList;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -458,8 +495,6 @@ public class CompanyServiceImpl extends ServiceImpl<CompanyMapper, Company> impl
|
|||||||
if (CollUtil.isNotEmpty(videoJa)) {
|
if (CollUtil.isNotEmpty(videoJa)) {
|
||||||
for (int i = 0; i < videoJa.size(); i++) {
|
for (int i = 0; i < videoJa.size(); i++) {
|
||||||
JSONObject jsonObject = videoJa.getJSONObject(i);
|
JSONObject jsonObject = videoJa.getJSONObject(i);
|
||||||
Map<String, Integer> integerMap = VideoItemServiceImpl.getTotalAndOnlineNum(jsonObject, childName);
|
|
||||||
jsonObject.putAll(integerMap);
|
|
||||||
rtList.add(BeanUtil.toBean(jsonObject, EntityMapV2.class));
|
rtList.add(BeanUtil.toBean(jsonObject, EntityMapV2.class));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
package com.zhgd.xmgl.modules.basicdata.service.impl;
|
package com.zhgd.xmgl.modules.basicdata.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.convert.Convert;
|
||||||
import cn.hutool.core.date.*;
|
import cn.hutool.core.date.*;
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
@ -27,6 +28,7 @@ import com.zhgd.redis.lock.RedisRepository;
|
|||||||
import com.zhgd.xmgl.constant.Cts;
|
import com.zhgd.xmgl.constant.Cts;
|
||||||
import com.zhgd.xmgl.entity.sj.JwtPayloadUserInfo;
|
import com.zhgd.xmgl.entity.sj.JwtPayloadUserInfo;
|
||||||
import com.zhgd.xmgl.modules.basicdata.entity.*;
|
import com.zhgd.xmgl.modules.basicdata.entity.*;
|
||||||
|
import com.zhgd.xmgl.modules.basicdata.entity.bo.CompanyUsersByProjectSnBo;
|
||||||
import com.zhgd.xmgl.modules.basicdata.entity.dto.LoginInfoByTokenDto;
|
import com.zhgd.xmgl.modules.basicdata.entity.dto.LoginInfoByTokenDto;
|
||||||
import com.zhgd.xmgl.modules.basicdata.enums.SystemUserAccountTypeEnum;
|
import com.zhgd.xmgl.modules.basicdata.enums.SystemUserAccountTypeEnum;
|
||||||
import com.zhgd.xmgl.modules.basicdata.mapper.*;
|
import com.zhgd.xmgl.modules.basicdata.mapper.*;
|
||||||
@ -1956,4 +1958,22 @@ public class SystemUserServiceImpl extends ServiceImpl<SystemUserMapper, SystemU
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Long> getCompanyUserIdsByProjectSn(String projectSn) {
|
||||||
|
CompanyUsersByProjectSnBo bo = baseMapper.getCompanyUsersByProjectSn(projectSn);
|
||||||
|
ArrayList<Long> list = new ArrayList<>();
|
||||||
|
addAllCompanyUserIds(list, bo.getUids0());
|
||||||
|
addAllCompanyUserIds(list, bo.getUids1());
|
||||||
|
addAllCompanyUserIds(list, bo.getUids2());
|
||||||
|
addAllCompanyUserIds(list, bo.getUids3());
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addAllCompanyUserIds(ArrayList<Long> list, String uids0) {
|
||||||
|
if (StrUtil.isNotBlank(uids0)) {
|
||||||
|
List<Long> ids = StrUtil.split(uids0, ",").stream().map(Convert::toLong).collect(Collectors.toList());
|
||||||
|
list.addAll(ids);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,7 +20,7 @@ import java.util.Map;
|
|||||||
* @version: V1.0
|
* @version: V1.0
|
||||||
*/
|
*/
|
||||||
@Mapper
|
@Mapper
|
||||||
@DataScope(includeTable = "car_info")
|
@DataScope(includeTable = "car_pass_record")
|
||||||
public interface CarPassRecordMapper extends BaseMapper<CarPassRecord> {
|
public interface CarPassRecordMapper extends BaseMapper<CarPassRecord> {
|
||||||
/**
|
/**
|
||||||
* 车辆通行记录统计
|
* 车辆通行记录统计
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
|
|||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.zhgd.annotation.OperLog;
|
import com.zhgd.annotation.OperLog;
|
||||||
import com.zhgd.jeecg.common.api.vo.Result;
|
import com.zhgd.jeecg.common.api.vo.Result;
|
||||||
|
import com.zhgd.jeecg.common.execption.OpenPromptException;
|
||||||
import com.zhgd.xmgl.modules.policecamera.entity.WorkTicket;
|
import com.zhgd.xmgl.modules.policecamera.entity.WorkTicket;
|
||||||
import com.zhgd.xmgl.modules.policecamera.entity.dto.OperateWorkTicketDto;
|
import com.zhgd.xmgl.modules.policecamera.entity.dto.OperateWorkTicketDto;
|
||||||
import com.zhgd.xmgl.modules.policecamera.entity.dto.WorkTicketDto;
|
import com.zhgd.xmgl.modules.policecamera.entity.dto.WorkTicketDto;
|
||||||
@ -131,8 +132,15 @@ public class WorkTicketController {
|
|||||||
@OperLog(operModul = "工作票管理", operType = "", operDesc = "开始、暂停、继续、结束工作票")
|
@OperLog(operModul = "工作票管理", operType = "", operDesc = "开始、暂停、继续、结束工作票")
|
||||||
@ApiOperation(value = "开始、暂停、继续、结束工作票", notes = "开始、暂停、继续、结束工作票", httpMethod = "POST")
|
@ApiOperation(value = "开始、暂停、继续、结束工作票", notes = "开始、暂停、继续、结束工作票", httpMethod = "POST")
|
||||||
@PostMapping(value = "/operateWorkTicket")
|
@PostMapping(value = "/operateWorkTicket")
|
||||||
public Result operateWorkTicket(@RequestBody OperateWorkTicketDto workTicketDto) {
|
public Result<Result> operateWorkTicket(@RequestBody OperateWorkTicketDto workTicketDto) {
|
||||||
|
try {
|
||||||
workTicketService.operateWorkTicket(workTicketDto);
|
workTicketService.operateWorkTicket(workTicketDto);
|
||||||
|
} catch (OpenPromptException e) {
|
||||||
|
Result<Object> data = new Result<>();
|
||||||
|
data.setCode(1);
|
||||||
|
data.setMessage(e.getMessage());
|
||||||
|
return Result.success(data);
|
||||||
|
}
|
||||||
return Result.ok();
|
return Result.ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -153,5 +153,9 @@ public class PoliceCameraItem implements Serializable {
|
|||||||
*/
|
*/
|
||||||
@ApiModelProperty(value = "默认码流类型:1、子码流,2、主码流,默认子码流")
|
@ApiModelProperty(value = "默认码流类型:1、子码流,2、主码流,默认子码流")
|
||||||
private Integer defaultStreamType;
|
private Integer defaultStreamType;
|
||||||
|
/**
|
||||||
|
* 封面路径
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "封面路径")
|
||||||
|
private java.lang.String coverUrl;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -130,4 +130,9 @@ public class WorkTicket implements Serializable {
|
|||||||
*/
|
*/
|
||||||
@ApiModelProperty(value = "班组ids")
|
@ApiModelProperty(value = "班组ids")
|
||||||
private java.lang.String teamIds;
|
private java.lang.String teamIds;
|
||||||
|
/**
|
||||||
|
* 风险类型:1:一般风险;2:高风险;
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "风险类型:1:一般风险;2:高风险;")
|
||||||
|
private java.lang.Integer riskType;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -17,4 +17,8 @@ public class CountWorkTicketVo {
|
|||||||
//暂停中
|
//暂停中
|
||||||
@ApiModelProperty("暂停中")
|
@ApiModelProperty("暂停中")
|
||||||
private Integer pause;
|
private Integer pause;
|
||||||
|
//施工中高风险数量
|
||||||
|
@ApiModelProperty("施工中高风险数量")
|
||||||
|
private Integer highRikeIngNum;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -28,4 +28,24 @@ public class PoliceCameraItemVo extends PoliceCameraItem {
|
|||||||
*/
|
*/
|
||||||
@ApiModelProperty(value = "分组名称")
|
@ApiModelProperty(value = "分组名称")
|
||||||
private String groupName;
|
private String groupName;
|
||||||
|
/**
|
||||||
|
* 未结束的工作票id
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "未结束的工作票id")
|
||||||
|
private java.lang.Long workTicketId;
|
||||||
|
/**
|
||||||
|
* 未结束的工作票编号
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "未结束的工作票编号")
|
||||||
|
private java.lang.String workTicketNumber;
|
||||||
|
/**
|
||||||
|
* 未结束的施工场站s(多个,分割)
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "未结束的施工场站s(多个,分割)")
|
||||||
|
private java.lang.String constructionAreas;
|
||||||
|
/**
|
||||||
|
* 施工区域名称s(多个,分割)
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "施工区域名称s(多个,分割)")
|
||||||
|
private java.lang.String constructionAreaNames;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
|||||||
import com.zhgd.xmgl.modules.policecamera.entity.WorkTicketCameraRel;
|
import com.zhgd.xmgl.modules.policecamera.entity.WorkTicketCameraRel;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 工作票与执法记录仪关联关系表
|
* @Description: 工作票与执法记录仪关联关系表
|
||||||
* @author: pds
|
* @author: pds
|
||||||
@ -12,4 +14,5 @@ import org.apache.ibatis.annotations.Mapper;
|
|||||||
*/
|
*/
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface WorkTicketCameraRelMapper extends BaseMapper<WorkTicketCameraRel> {
|
public interface WorkTicketCameraRelMapper extends BaseMapper<WorkTicketCameraRel> {
|
||||||
|
List<String> findOccupiedTicketNumbers(Long ticketId);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,4 +1,12 @@
|
|||||||
<?xml version="1.0" encoding="UTF-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">
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<mapper namespace="com.zhgd.xmgl.modules.policecamera.mapper.WorkTicketCameraRelMapper">
|
<mapper namespace="com.zhgd.xmgl.modules.policecamera.mapper.WorkTicketCameraRelMapper">
|
||||||
|
|
||||||
|
<select id="findOccupiedTicketNumbers" resultType="java.lang.String">
|
||||||
|
select distinct wt1.work_ticket_number
|
||||||
|
from work_ticket_camera_rel wtcr1
|
||||||
|
join work_ticket_camera_rel wtcr2 on wtcr1.police_camera_id = wtcr2.police_camera_id
|
||||||
|
join work_ticket wt1 on wt1.id = wtcr2.work_ticket_id
|
||||||
|
where wt1.status!=4 and wtcr1.work_ticket_id=#{ticketId}
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@ -29,6 +29,7 @@
|
|||||||
,ifnull(sum(if(t.status=2,1,0)),0) as ing
|
,ifnull(sum(if(t.status=2,1,0)),0) as ing
|
||||||
,ifnull(sum(if(t.status=3,1,0)),0) as pause
|
,ifnull(sum(if(t.status=3,1,0)),0) as pause
|
||||||
,ifnull(sum(if(t.status=4,1,0)),0) as done
|
,ifnull(sum(if(t.status=4,1,0)),0) as done
|
||||||
|
,ifnull(sum(if(t.risk_type=2 and t.status=2,1,0)),0) as highRikeIngNum
|
||||||
from work_ticket t
|
from work_ticket t
|
||||||
where 1=1
|
where 1=1
|
||||||
<if test="projectSn != null and projectSn != ''">
|
<if test="projectSn != null and projectSn != ''">
|
||||||
|
|||||||
@ -3,6 +3,8 @@ package com.zhgd.xmgl.modules.policecamera.service;
|
|||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.zhgd.xmgl.modules.policecamera.entity.WorkTicketCameraRel;
|
import com.zhgd.xmgl.modules.policecamera.entity.WorkTicketCameraRel;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 工作票与执法记录仪关联关系表
|
* @Description: 工作票与执法记录仪关联关系表
|
||||||
* @author: pds
|
* @author: pds
|
||||||
@ -10,5 +12,11 @@ import com.zhgd.xmgl.modules.policecamera.entity.WorkTicketCameraRel;
|
|||||||
* @version: V1.0
|
* @version: V1.0
|
||||||
*/
|
*/
|
||||||
public interface IWorkTicketCameraRelService extends IService<WorkTicketCameraRel> {
|
public interface IWorkTicketCameraRelService extends IService<WorkTicketCameraRel> {
|
||||||
|
/**
|
||||||
|
* 查询被占用的执法记录仪的工作票的编号
|
||||||
|
*
|
||||||
|
* @param ticketId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<String> findOccupiedTicketNumbers(Long ticketId);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -36,6 +36,8 @@ import com.zhgd.xmgl.modules.policecamera.service.IPoliceCameraGroupService;
|
|||||||
import com.zhgd.xmgl.modules.policecamera.service.IPoliceCameraItemService;
|
import com.zhgd.xmgl.modules.policecamera.service.IPoliceCameraItemService;
|
||||||
import com.zhgd.xmgl.modules.policecamera.service.IPoliceCameraVideoConfigService;
|
import com.zhgd.xmgl.modules.policecamera.service.IPoliceCameraVideoConfigService;
|
||||||
import com.zhgd.xmgl.modules.policecamera.service.IWorkTicketCameraRelService;
|
import com.zhgd.xmgl.modules.policecamera.service.IWorkTicketCameraRelService;
|
||||||
|
import com.zhgd.xmgl.modules.quality.entity.QualityRegion;
|
||||||
|
import com.zhgd.xmgl.modules.quality.service.IQualityRegionService;
|
||||||
import com.zhgd.xmgl.modules.video.mapper.AiAnalyseHardWareAlarmRecordMapper;
|
import com.zhgd.xmgl.modules.video.mapper.AiAnalyseHardWareAlarmRecordMapper;
|
||||||
import com.zhgd.xmgl.modules.video.mapper.ProjectVideoHkVqdMapper;
|
import com.zhgd.xmgl.modules.video.mapper.ProjectVideoHkVqdMapper;
|
||||||
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
|
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
|
||||||
@ -94,6 +96,9 @@ public class PoliceCameraItemServiceImpl extends ServiceImpl<PoliceCameraItemMap
|
|||||||
@Lazy
|
@Lazy
|
||||||
@Autowired
|
@Autowired
|
||||||
private IPoliceCameraGroupService policeCameraGroupService;
|
private IPoliceCameraGroupService policeCameraGroupService;
|
||||||
|
@Lazy
|
||||||
|
@Autowired
|
||||||
|
private IQualityRegionService qualityRegionService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IPage<PoliceCameraItemVo> queryPageList(HashMap<String, Object> param) {
|
public IPage<PoliceCameraItemVo> queryPageList(HashMap<String, Object> param) {
|
||||||
@ -131,9 +136,18 @@ public class PoliceCameraItemServiceImpl extends ServiceImpl<PoliceCameraItemMap
|
|||||||
.eq(WorkerInfo::getProjectSn, projectSn)).stream().collect(Collectors.toMap(WorkerInfo::getId, Function.identity(), (o1, o2) -> o1));
|
.eq(WorkerInfo::getProjectSn, projectSn)).stream().collect(Collectors.toMap(WorkerInfo::getId, Function.identity(), (o1, o2) -> o1));
|
||||||
Map<Long, SystemUser> userMap = systemUserService.list(new LambdaQueryWrapper<SystemUser>()
|
Map<Long, SystemUser> userMap = systemUserService.list(new LambdaQueryWrapper<SystemUser>()
|
||||||
.eq(SystemUser::getSn, projectSn)).stream().collect(Collectors.toMap(SystemUser::getUserId, Function.identity(), (o1, o2) -> o1));
|
.eq(SystemUser::getSn, projectSn)).stream().collect(Collectors.toMap(SystemUser::getUserId, Function.identity(), (o1, o2) -> o1));
|
||||||
|
Map<Long, QualityRegion> regionMap = qualityRegionService.list(new LambdaQueryWrapper<QualityRegion>()
|
||||||
|
.select(QualityRegion::getId, QualityRegion::getRegionName, QualityRegion::getProjectSn))
|
||||||
|
.stream().collect(Collectors.toMap(QualityRegion::getId, Function.identity(), (o1, o2) -> o1));
|
||||||
for (PoliceCameraItemVo itemVo : list) {
|
for (PoliceCameraItemVo itemVo : list) {
|
||||||
itemVo.setPusherNames(StringUtils.isNotEmpty(itemVo.getPushers()) ? StrUtil.split(itemVo.getPushers(), ",").stream().map(id -> userMap.get(Convert.toLong(id))).filter(Objects::nonNull).map(SystemUser::getRealName).collect(Collectors.joining(",")) : "");
|
itemVo.setPusherNames(StringUtils.isNotEmpty(itemVo.getPushers()) ? StrUtil.split(itemVo.getPushers(), ",").stream().map(id -> userMap.get(Convert.toLong(id))).filter(Objects::nonNull).map(SystemUser::getRealName).collect(Collectors.joining(",")) : "");
|
||||||
itemVo.setUserNames(StringUtils.isNotEmpty(itemVo.getUsers()) ? StrUtil.split(itemVo.getUsers(), ",").stream().map(id -> workerInfoMap.get(Convert.toLong(id))).filter(Objects::nonNull).map(WorkerInfo::getWorkerName).collect(Collectors.joining(",")) : "");
|
itemVo.setUserNames(StringUtils.isNotEmpty(itemVo.getUsers()) ? StrUtil.split(itemVo.getUsers(), ",").stream().map(id -> workerInfoMap.get(Convert.toLong(id))).filter(Objects::nonNull).map(WorkerInfo::getWorkerName).collect(Collectors.joining(",")) : "");
|
||||||
|
// 设置施工区域名称
|
||||||
|
itemVo.setConstructionAreaNames(EntityUtils.convertIdsToNames(
|
||||||
|
itemVo.getConstructionAreas(),
|
||||||
|
regionMap,
|
||||||
|
QualityRegion::getRegionName
|
||||||
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
|
|||||||
@ -6,6 +6,8 @@ import com.zhgd.xmgl.modules.policecamera.mapper.WorkTicketCameraRelMapper;
|
|||||||
import com.zhgd.xmgl.modules.policecamera.service.IWorkTicketCameraRelService;
|
import com.zhgd.xmgl.modules.policecamera.service.IWorkTicketCameraRelService;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 工作票与执法记录仪关联关系表
|
* @Description: 工作票与执法记录仪关联关系表
|
||||||
* @author: pds
|
* @author: pds
|
||||||
@ -15,4 +17,8 @@ import org.springframework.stereotype.Service;
|
|||||||
@Service
|
@Service
|
||||||
public class WorkTicketCameraRelServiceImpl extends ServiceImpl<WorkTicketCameraRelMapper, WorkTicketCameraRel> implements IWorkTicketCameraRelService {
|
public class WorkTicketCameraRelServiceImpl extends ServiceImpl<WorkTicketCameraRelMapper, WorkTicketCameraRel> implements IWorkTicketCameraRelService {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> findOccupiedTicketNumbers(Long ticketId) {
|
||||||
|
return baseMapper.findOccupiedTicketNumbers(ticketId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.zhgd.jeecg.common.execption.OpenAlertException;
|
import com.zhgd.jeecg.common.execption.OpenAlertException;
|
||||||
|
import com.zhgd.jeecg.common.execption.OpenPromptException;
|
||||||
import com.zhgd.jeecg.common.system.query.QueryGenerator;
|
import com.zhgd.jeecg.common.system.query.QueryGenerator;
|
||||||
import com.zhgd.xmgl.call.api.PoliceCameraManufacturer;
|
import com.zhgd.xmgl.call.api.PoliceCameraManufacturer;
|
||||||
import com.zhgd.xmgl.call.factory.PoliceCameraManufacturerFactory;
|
import com.zhgd.xmgl.call.factory.PoliceCameraManufacturerFactory;
|
||||||
@ -281,6 +282,7 @@ public class WorkTicketServiceImpl extends ServiceImpl<WorkTicketMapper, WorkTic
|
|||||||
@Override
|
@Override
|
||||||
public void operateWorkTicket(OperateWorkTicketDto workTicketDto) {
|
public void operateWorkTicket(OperateWorkTicketDto workTicketDto) {
|
||||||
WorkTicketVo ticket = this.queryById(workTicketDto.getId() + "");
|
WorkTicketVo ticket = this.queryById(workTicketDto.getId() + "");
|
||||||
|
restartCheck(workTicketDto, ticket);
|
||||||
ticket.setId(workTicketDto.getId());
|
ticket.setId(workTicketDto.getId());
|
||||||
switch (workTicketDto.getOperateStatus()) {
|
switch (workTicketDto.getOperateStatus()) {
|
||||||
case 1:
|
case 1:
|
||||||
@ -356,6 +358,21 @@ public class WorkTicketServiceImpl extends ServiceImpl<WorkTicketMapper, WorkTic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 已结束的改成继续检查它的执法记录仪是否已被别的工作票绑定
|
||||||
|
*
|
||||||
|
* @param workTicketDto
|
||||||
|
* @param ticket
|
||||||
|
*/
|
||||||
|
private void restartCheck(OperateWorkTicketDto workTicketDto, WorkTicketVo ticket) {
|
||||||
|
if (Objects.equals(ticket.getStatus(), 4) && Objects.equals(workTicketDto.getOperateStatus(), 3)) {
|
||||||
|
List<String> workTicketNumbers = workTicketCameraRelService.findOccupiedTicketNumbers(workTicketDto.getId());
|
||||||
|
if (CollUtil.isNotEmpty(workTicketNumbers)) {
|
||||||
|
throw new OpenPromptException(StrUtil.format("此工作票绑定的监控设备已被{}占用,无法恢复到施工中状态,请解绑后重试", StrUtil.join(",", workTicketNumbers)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CountWorkTicketVo countWorkTicket(HashMap<String, Object> map) {
|
public CountWorkTicketVo countWorkTicket(HashMap<String, Object> map) {
|
||||||
return baseMapper.countWorkTicket(map);
|
return baseMapper.countWorkTicket(map);
|
||||||
|
|||||||
@ -363,7 +363,31 @@ public class Project implements Serializable {
|
|||||||
@Excel(name = "桥梁长度(m)", width = 15)
|
@Excel(name = "桥梁长度(m)", width = 15)
|
||||||
@ApiModelProperty(value = "桥梁长度(m)")
|
@ApiModelProperty(value = "桥梁长度(m)")
|
||||||
private java.lang.String bridgeLength;
|
private java.lang.String bridgeLength;
|
||||||
|
/**
|
||||||
|
* 项目/场站负责人
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "项目/场站负责人")
|
||||||
|
private java.lang.String projectSiteManager;
|
||||||
|
/**
|
||||||
|
* 新能源类型
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "新能源类型")
|
||||||
|
private java.lang.String renewableEnergyType;
|
||||||
|
/**
|
||||||
|
* 装机容量(万kW)
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "装机容量(万kW)")
|
||||||
|
private java.lang.String installedCapacity;
|
||||||
|
/**
|
||||||
|
* 是否配储1是0否
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "是否配储1是0否")
|
||||||
|
private java.lang.Integer storageRequired;
|
||||||
|
/**
|
||||||
|
* 容量
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "容量")
|
||||||
|
private java.lang.String capacity;
|
||||||
/**
|
/**
|
||||||
* runde平台token
|
* runde平台token
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -94,7 +94,6 @@ public interface IEnableMessageDevRuleService extends IService<EnableMessageDevR
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 开启就发送系统站内消息
|
* 开启就发送系统站内消息
|
||||||
*
|
|
||||||
* @param rule
|
* @param rule
|
||||||
* @param type
|
* @param type
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -14,6 +14,7 @@ import com.zhgd.xmgl.call.api.BroadcastManufacturer;
|
|||||||
import com.zhgd.xmgl.call.api.DevSmsManufacturer;
|
import com.zhgd.xmgl.call.api.DevSmsManufacturer;
|
||||||
import com.zhgd.xmgl.call.factory.BroadcastManufacturerFactory;
|
import com.zhgd.xmgl.call.factory.BroadcastManufacturerFactory;
|
||||||
import com.zhgd.xmgl.call.factory.DevSmsManufacturerFactory;
|
import com.zhgd.xmgl.call.factory.DevSmsManufacturerFactory;
|
||||||
|
import com.zhgd.xmgl.constant.Cts;
|
||||||
import com.zhgd.xmgl.enums.ParamEnum;
|
import com.zhgd.xmgl.enums.ParamEnum;
|
||||||
import com.zhgd.xmgl.modules.basicdata.entity.SystemUser;
|
import com.zhgd.xmgl.modules.basicdata.entity.SystemUser;
|
||||||
import com.zhgd.xmgl.modules.basicdata.entity.bo.NoticeMessagePromptTone;
|
import com.zhgd.xmgl.modules.basicdata.entity.bo.NoticeMessagePromptTone;
|
||||||
@ -37,10 +38,7 @@ import org.springframework.stereotype.Service;
|
|||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
|
|
||||||
import java.time.LocalTime;
|
import java.time.LocalTime;
|
||||||
import java.util.HashMap;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@ -233,8 +231,19 @@ public class EnableMessageDevRuleServiceImpl extends ServiceImpl<EnableMessageDe
|
|||||||
if (Objects.equals(rule.getEnableSystemMessagePromptTone(), 1)) {
|
if (Objects.equals(rule.getEnableSystemMessagePromptTone(), 1)) {
|
||||||
tone = new NoticeMessagePromptTone(rule.getMessagePromptToneConfig(), rule.getPlaybackFrequency());
|
tone = new NoticeMessagePromptTone(rule.getMessagePromptToneConfig(), rule.getPlaybackFrequency());
|
||||||
}
|
}
|
||||||
|
String title = "设备报警通知";
|
||||||
|
String msg = rule.getMessageTemplateContent();
|
||||||
|
List<Long> companyUsers = systemUserService.getCompanyUserIdsByProjectSn(rule.getProjectSn());
|
||||||
|
if (CollUtil.isNotEmpty(companyUsers)) {
|
||||||
|
ids.addAll(companyUsers);
|
||||||
|
}
|
||||||
|
List<SystemUser> systemUsers = systemUserService.getSystemUsersBySn(new MapBuilder<String, Object>().put(Cts.SN, rule.getProjectSn()).put(Cts.QUERY_TYPE, Cts.PROJECT_LEVEL).build());
|
||||||
|
if (CollUtil.isNotEmpty(systemUsers)) {
|
||||||
|
List<Long> userIdSet = systemUsers.stream().map(SystemUser::getUserId).collect(Collectors.toList());
|
||||||
|
ids.addAll(userIdSet);
|
||||||
|
}
|
||||||
for (Long id : ids) {
|
for (Long id : ids) {
|
||||||
noticeService.addUserNoticeAndApp(id, "设备报警通知", rule.getMessageTemplateContent(), type, tone);
|
noticeService.addUserNoticeAndApp(id, title, msg, type, tone);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,6 +13,7 @@ import com.zhgd.xmgl.modules.basicdata.service.ISystemUserService;
|
|||||||
import com.zhgd.xmgl.modules.video.entity.AiAnalyseHardWareAlarmRecord;
|
import com.zhgd.xmgl.modules.video.entity.AiAnalyseHardWareAlarmRecord;
|
||||||
import com.zhgd.xmgl.modules.video.entity.vo.AiAnalyseHardWareAlarmTotalVo;
|
import com.zhgd.xmgl.modules.video.entity.vo.AiAnalyseHardWareAlarmTotalVo;
|
||||||
import com.zhgd.xmgl.modules.video.entity.vo.AiAnalyseHardWareAlarmTrendVo;
|
import com.zhgd.xmgl.modules.video.entity.vo.AiAnalyseHardWareAlarmTrendVo;
|
||||||
|
import com.zhgd.xmgl.modules.video.entity.vo.Recent10DayRecordsVo;
|
||||||
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 io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
@ -318,6 +319,18 @@ public class AiAnalyseHardWareAlarmRecordController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ApiOperation(value = "查询最近10天和各10条AI分析硬件设备报警记录", notes = "查询最近10天和各10条AI分析硬件设备报警记录", httpMethod = "POST")
|
||||||
|
@ApiImplicitParams({
|
||||||
|
@ApiImplicitParam(name = "projectSn", value = "项目SN", paramType = "body", required = false, dataType = "String"),
|
||||||
|
@ApiImplicitParam(name = "location", value = "位置", paramType = "body", dataType = "long"),
|
||||||
|
@ApiImplicitParam(name = "alarmType", value = "类型(字典)", paramType = "body", required = false, dataType = "String"),
|
||||||
|
@ApiImplicitParam(name = "startTime", value = "开始时间,格式2020-08-16 00:00:00", dataType = "String", paramType = "body", required = false),
|
||||||
|
@ApiImplicitParam(name = "endTime", value = "结束时间,格式2020-08-16 23:59:59", dataType = "String", paramType = "body", required = false),
|
||||||
|
})
|
||||||
|
@PostMapping(value = "/getRecent10DayRecords")
|
||||||
|
public Result<List<Recent10DayRecordsVo>> getRecent10DayRecords(@RequestBody Map<String, Object> param) {
|
||||||
|
return Result.success(aiAnalyseHardWareAlarmRecordService.getRecent10DayRecords(param));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,15 @@
|
|||||||
|
package com.zhgd.xmgl.modules.video.entity.bo;
|
||||||
|
|
||||||
|
import com.zhgd.xmgl.modules.video.entity.AiAnalyseHardWareAlarmRecord;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class Recent10DayRecordsBo extends AiAnalyseHardWareAlarmRecord {
|
||||||
|
/**
|
||||||
|
* 日期
|
||||||
|
*/
|
||||||
|
@ApiModelProperty("日期")
|
||||||
|
private String date;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,17 @@
|
|||||||
|
package com.zhgd.xmgl.modules.video.entity.vo;
|
||||||
|
|
||||||
|
import com.zhgd.xmgl.modules.video.entity.AiAnalyseHardWareAlarmRecord;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class Recent10DayRecordsVo {
|
||||||
|
/**
|
||||||
|
* 日期
|
||||||
|
*/
|
||||||
|
@ApiModelProperty("日期")
|
||||||
|
private String date;
|
||||||
|
private List<AiAnalyseHardWareAlarmRecord> records;
|
||||||
|
}
|
||||||
@ -6,6 +6,7 @@ import com.zhgd.annotation.DataScope;
|
|||||||
import com.zhgd.jeecg.common.mybatis.EntityMap;
|
import com.zhgd.jeecg.common.mybatis.EntityMap;
|
||||||
import com.zhgd.xmgl.base.entity.vo.SectorOneVo;
|
import com.zhgd.xmgl.base.entity.vo.SectorOneVo;
|
||||||
import com.zhgd.xmgl.modules.video.entity.AiAnalyseHardWareAlarmRecord;
|
import com.zhgd.xmgl.modules.video.entity.AiAnalyseHardWareAlarmRecord;
|
||||||
|
import com.zhgd.xmgl.modules.video.entity.bo.Recent10DayRecordsBo;
|
||||||
import com.zhgd.xmgl.modules.video.entity.vo.AiAnalyseHardWareAlarmRecordVo;
|
import com.zhgd.xmgl.modules.video.entity.vo.AiAnalyseHardWareAlarmRecordVo;
|
||||||
import com.zhgd.xmgl.modules.video.entity.vo.AiAnalyseHardWareAlarmTotalVo;
|
import com.zhgd.xmgl.modules.video.entity.vo.AiAnalyseHardWareAlarmTotalVo;
|
||||||
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
|
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
|
||||||
@ -173,4 +174,6 @@ public interface AiAnalyseHardWareAlarmRecordMapper extends BaseMapper<AiAnalyse
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
AiAnalyseHardWareAlarmRecord getAllocateNewestRecord(HashMap<String, Object> map);
|
AiAnalyseHardWareAlarmRecord getAllocateNewestRecord(HashMap<String, Object> map);
|
||||||
|
|
||||||
|
List<Recent10DayRecordsBo> getRecent10DayRecords(Map<String, Object> param);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -576,4 +576,73 @@
|
|||||||
order by a.create_time desc
|
order by a.create_time desc
|
||||||
limit 1
|
limit 1
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="getRecent10DayRecords" resultType="com.zhgd.xmgl.modules.video.entity.bo.Recent10DayRecordsBo">
|
||||||
|
SELECT
|
||||||
|
dates.alarm_date as date,
|
||||||
|
a.*
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT DATE(create_time) as alarm_date
|
||||||
|
FROM ai_analyse_hard_ware_alarm_record
|
||||||
|
where 1=1
|
||||||
|
<if test="projectSn != null and projectSn != ''">
|
||||||
|
and project_sn = #{projectSn}
|
||||||
|
</if>
|
||||||
|
<if test="alarmType != null and alarmType != ''">
|
||||||
|
and alarm_type = #{alarmType}
|
||||||
|
</if>
|
||||||
|
<if test="location != null and location != ''">
|
||||||
|
and location like CONCAT(CONCAT('%', #{location}), '%')
|
||||||
|
</if>
|
||||||
|
<if test="startTime != null and startTime != ''">
|
||||||
|
AND create_time >= #{startTime}
|
||||||
|
</if>
|
||||||
|
<if test="endTime != null and endTime != ''">
|
||||||
|
AND create_time <![CDATA[<=]]> if(LENGTH(#{endTime}) = 10, CONCAT(DATE_FORMAT(#{endTime}, '%Y-%m-%d'), ' 23:59:59'), #{endTime})
|
||||||
|
</if>
|
||||||
|
ORDER BY alarm_date DESC
|
||||||
|
LIMIT 10
|
||||||
|
) dates
|
||||||
|
LEFT JOIN ai_analyse_hard_ware_alarm_record a ON (
|
||||||
|
DATE(a.create_time) = dates.alarm_date AND
|
||||||
|
(
|
||||||
|
SELECT COUNT(*)
|
||||||
|
FROM ai_analyse_hard_ware_alarm_record a2
|
||||||
|
WHERE DATE(a2.create_time) = dates.alarm_date
|
||||||
|
AND a2.create_time >= a.create_time
|
||||||
|
<if test="projectSn != null and projectSn != ''">
|
||||||
|
and project_sn = #{projectSn}
|
||||||
|
</if>
|
||||||
|
<if test="alarmType != null and alarmType != ''">
|
||||||
|
and alarm_type = #{alarmType}
|
||||||
|
</if>
|
||||||
|
<if test="location != null and location != ''">
|
||||||
|
and location like CONCAT(CONCAT('%', #{location}), '%')
|
||||||
|
</if>
|
||||||
|
<if test="startTime != null and startTime != ''">
|
||||||
|
AND create_time >= #{startTime}
|
||||||
|
</if>
|
||||||
|
<if test="endTime != null and endTime != ''">
|
||||||
|
AND create_time <![CDATA[<=]]> if(LENGTH(#{endTime}) = 10, CONCAT(DATE_FORMAT(#{endTime}, '%Y-%m-%d'), ' 23:59:59'), #{endTime})
|
||||||
|
</if>
|
||||||
|
) <= 10
|
||||||
|
)
|
||||||
|
WHERE a.id IS NOT NULL
|
||||||
|
<if test="projectSn != null and projectSn != ''">
|
||||||
|
and project_sn = #{projectSn}
|
||||||
|
</if>
|
||||||
|
<if test="alarmType != null and alarmType != ''">
|
||||||
|
and alarm_type = #{alarmType}
|
||||||
|
</if>
|
||||||
|
<if test="location != null and location != ''">
|
||||||
|
and location like CONCAT(CONCAT('%', #{location}), '%')
|
||||||
|
</if>
|
||||||
|
<if test="startTime != null and startTime != ''">
|
||||||
|
AND create_time >= #{startTime}
|
||||||
|
</if>
|
||||||
|
<if test="endTime != null and endTime != ''">
|
||||||
|
AND create_time <![CDATA[<=]]> if(LENGTH(#{endTime}) = 10, CONCAT(DATE_FORMAT(#{endTime}, '%Y-%m-%d'), ' 23:59:59'), #{endTime})
|
||||||
|
</if>
|
||||||
|
ORDER BY dates.alarm_date DESC, a.create_time DESC
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@ -172,7 +172,9 @@
|
|||||||
FROM video_item t1
|
FROM video_item t1
|
||||||
INNER JOIN project_video_config t2 ON t2.id = t1.video_id
|
INNER JOIN project_video_config t2 ON t2.id = t1.video_id
|
||||||
WHERE t2.is_enable = 1
|
WHERE t2.is_enable = 1
|
||||||
|
<if test="projectSn != null and projectSn != ''">
|
||||||
and t2.project_sn = #{projectSn}
|
and t2.project_sn = #{projectSn}
|
||||||
|
</if>
|
||||||
order by t1.sort_num
|
order by t1.sort_num
|
||||||
<if test="deviceState != null and deviceState != ''">
|
<if test="deviceState != null and deviceState != ''">
|
||||||
and t1.device_state = #{deviceState}
|
and t1.device_state = #{deviceState}
|
||||||
|
|||||||
@ -8,6 +8,7 @@ import com.zhgd.xmgl.base.entity.vo.SectorVo;
|
|||||||
import com.zhgd.xmgl.modules.video.entity.AiAnalyseHardWareAlarmRecord;
|
import com.zhgd.xmgl.modules.video.entity.AiAnalyseHardWareAlarmRecord;
|
||||||
import com.zhgd.xmgl.modules.video.entity.vo.AiAnalyseHardWareAlarmTotalVo;
|
import com.zhgd.xmgl.modules.video.entity.vo.AiAnalyseHardWareAlarmTotalVo;
|
||||||
import com.zhgd.xmgl.modules.video.entity.vo.AiAnalyseHardWareAlarmTrendVo;
|
import com.zhgd.xmgl.modules.video.entity.vo.AiAnalyseHardWareAlarmTrendVo;
|
||||||
|
import com.zhgd.xmgl.modules.video.entity.vo.Recent10DayRecordsVo;
|
||||||
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
|
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
@ -174,4 +175,5 @@ public interface IAiAnalyseHardWareAlarmRecordService extends IService<AiAnalyse
|
|||||||
void setFalsePositive(AiAnalyseHardWareAlarmRecord taskProgressMaterialRel);
|
void setFalsePositive(AiAnalyseHardWareAlarmRecord taskProgressMaterialRel);
|
||||||
|
|
||||||
|
|
||||||
|
List<Recent10DayRecordsVo> getRecent10DayRecords(Map<String, Object> param);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -40,8 +40,10 @@ import com.zhgd.xmgl.modules.project.service.IProjectService;
|
|||||||
import com.zhgd.xmgl.modules.project.service.ProjectJqmDevService;
|
import com.zhgd.xmgl.modules.project.service.ProjectJqmDevService;
|
||||||
import com.zhgd.xmgl.modules.video.entity.*;
|
import com.zhgd.xmgl.modules.video.entity.*;
|
||||||
import com.zhgd.xmgl.modules.video.entity.bo.AiAnalyseHardWareAlarmRecordNoticeBo;
|
import com.zhgd.xmgl.modules.video.entity.bo.AiAnalyseHardWareAlarmRecordNoticeBo;
|
||||||
|
import com.zhgd.xmgl.modules.video.entity.bo.Recent10DayRecordsBo;
|
||||||
import com.zhgd.xmgl.modules.video.entity.vo.AiAnalyseHardWareAlarmTotalVo;
|
import com.zhgd.xmgl.modules.video.entity.vo.AiAnalyseHardWareAlarmTotalVo;
|
||||||
import com.zhgd.xmgl.modules.video.entity.vo.AiAnalyseHardWareAlarmTrendVo;
|
import com.zhgd.xmgl.modules.video.entity.vo.AiAnalyseHardWareAlarmTrendVo;
|
||||||
|
import com.zhgd.xmgl.modules.video.entity.vo.Recent10DayRecordsVo;
|
||||||
import com.zhgd.xmgl.modules.video.enums.AiAnalyseHardWareAlarmRecordHandleResultEnum;
|
import com.zhgd.xmgl.modules.video.enums.AiAnalyseHardWareAlarmRecordHandleResultEnum;
|
||||||
import com.zhgd.xmgl.modules.video.mapper.AiAnalyseHardWareAlarmRecordMapper;
|
import com.zhgd.xmgl.modules.video.mapper.AiAnalyseHardWareAlarmRecordMapper;
|
||||||
import com.zhgd.xmgl.modules.video.mapper.AiAnalyseHardWareRecordMapper;
|
import com.zhgd.xmgl.modules.video.mapper.AiAnalyseHardWareRecordMapper;
|
||||||
@ -203,18 +205,8 @@ public class AiAnalyseHardWareAlarmRecordServiceImpl extends ServiceImpl<AiAnaly
|
|||||||
// log.info("木垒AI预警转发结果:{}", result2);
|
// log.info("木垒AI预警转发结果:{}", result2);
|
||||||
// });
|
// });
|
||||||
// }
|
// }
|
||||||
QueryWrapper<AiAnalyseHardWareRecord> queryWrapper = new QueryWrapper<>();
|
String projectSn = null;
|
||||||
queryWrapper.lambda().eq(AiAnalyseHardWareRecord::getHardwareId, body.getString("hardwareId"));
|
|
||||||
AiAnalyseHardWareRecord aiAnalyseHardWareRecord = aiAnalyseHardWareRecordMapper.selectOne(queryWrapper);
|
|
||||||
if (aiAnalyseHardWareRecord == null) {
|
|
||||||
throw new OpenAlertException(MessageUtil.get("EquipmentNumIncorrectErr"));
|
|
||||||
}
|
|
||||||
AiAnalyseHardWareAlarmRecord aiAnalyseHardWareAlarmRecord = new AiAnalyseHardWareAlarmRecord();
|
AiAnalyseHardWareAlarmRecord aiAnalyseHardWareAlarmRecord = new AiAnalyseHardWareAlarmRecord();
|
||||||
aiAnalyseHardWareAlarmRecord.setCreateTime(body.getString("datetime"));
|
|
||||||
aiAnalyseHardWareAlarmRecord.setAlarmType(body.getInteger("type"));
|
|
||||||
aiAnalyseHardWareAlarmRecord.setHardwareId(aiAnalyseHardWareRecord.getHardwareId());
|
|
||||||
aiAnalyseHardWareAlarmRecord.setHardwareName(aiAnalyseHardWareRecord.getHardwareName());
|
|
||||||
aiAnalyseHardWareAlarmRecord.setLocation(body.getString("location"));
|
|
||||||
try {
|
try {
|
||||||
if(StringUtils.isNotBlank(body.getString("remark"))) {
|
if(StringUtils.isNotBlank(body.getString("remark"))) {
|
||||||
VideoItem videoItem = videoItemService.getOne(Wrappers.<VideoItem>lambdaQuery()
|
VideoItem videoItem = videoItemService.getOne(Wrappers.<VideoItem>lambdaQuery()
|
||||||
@ -222,12 +214,26 @@ public class AiAnalyseHardWareAlarmRecordServiceImpl extends ServiceImpl<AiAnaly
|
|||||||
if (videoItem != null) {
|
if (videoItem != null) {
|
||||||
aiAnalyseHardWareAlarmRecord.setLocation(videoItem.getVideoName());
|
aiAnalyseHardWareAlarmRecord.setLocation(videoItem.getVideoName());
|
||||||
VideoGroup videoGroup = videoGroupService.getById(videoItem.getGroupId());
|
VideoGroup videoGroup = videoGroupService.getById(videoItem.getGroupId());
|
||||||
aiAnalyseHardWareAlarmRecord.setProjectSn(videoGroup == null ? aiAnalyseHardWareRecord.getProjectSn() : videoGroup.getProjectSn());
|
projectSn = videoGroup == null ? null : videoGroup.getProjectSn();
|
||||||
|
aiAnalyseHardWareAlarmRecord.setProjectSn(projectSn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (Exception e) {}
|
} catch (Exception e) {}
|
||||||
|
QueryWrapper<AiAnalyseHardWareRecord> queryWrapper = new QueryWrapper<>();
|
||||||
// aiAnalyseHardWareAlarmRecord.setProjectSn(aiAnalyseHardWareRecord.getProjectSn());
|
if (projectSn != null) {
|
||||||
|
queryWrapper.lambda().eq(AiAnalyseHardWareRecord::getProjectSn, projectSn);
|
||||||
|
}
|
||||||
|
queryWrapper.lambda().eq(AiAnalyseHardWareRecord::getHardwareId, body.getString("hardwareId"));
|
||||||
|
AiAnalyseHardWareRecord aiAnalyseHardWareRecord = aiAnalyseHardWareRecordMapper.selectOne(queryWrapper);
|
||||||
|
if (aiAnalyseHardWareRecord == null) {
|
||||||
|
throw new OpenAlertException(MessageUtil.get("EquipmentNumIncorrectErr"));
|
||||||
|
}
|
||||||
|
aiAnalyseHardWareAlarmRecord.setCreateTime(body.getString("datetime"));
|
||||||
|
aiAnalyseHardWareAlarmRecord.setAlarmType(body.getInteger("type"));
|
||||||
|
aiAnalyseHardWareAlarmRecord.setHardwareId(aiAnalyseHardWareRecord.getHardwareId());
|
||||||
|
aiAnalyseHardWareAlarmRecord.setHardwareName(aiAnalyseHardWareRecord.getHardwareName());
|
||||||
|
aiAnalyseHardWareAlarmRecord.setLocation(body.getString("location"));
|
||||||
|
aiAnalyseHardWareAlarmRecord.setProjectSn(aiAnalyseHardWareRecord.getProjectSn());
|
||||||
aiAnalyseHardWareAlarmRecord.setStatus(1);
|
aiAnalyseHardWareAlarmRecord.setStatus(1);
|
||||||
if (StringUtils.isNotEmpty(body.getString(IMAGE))) {
|
if (StringUtils.isNotEmpty(body.getString(IMAGE))) {
|
||||||
String base64data = "";
|
String base64data = "";
|
||||||
@ -760,6 +766,30 @@ public class AiAnalyseHardWareAlarmRecordServiceImpl extends ServiceImpl<AiAnaly
|
|||||||
baseMapper.updateById(taskProgressMaterialRel);
|
baseMapper.updateById(taskProgressMaterialRel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Recent10DayRecordsVo> getRecent10DayRecords(Map<String, Object> param) {
|
||||||
|
List<Recent10DayRecordsBo> records = baseMapper.getRecent10DayRecords(param);
|
||||||
|
// 按日期分组
|
||||||
|
Map<String, List<AiAnalyseHardWareAlarmRecord>> groupedRecords = records.stream()
|
||||||
|
.collect(Collectors.groupingBy(
|
||||||
|
Recent10DayRecordsBo::getDate,
|
||||||
|
LinkedHashMap::new, // 保持日期顺序
|
||||||
|
Collectors.mapping(bo -> {
|
||||||
|
return BeanUtil.toBean(bo, AiAnalyseHardWareAlarmRecord.class);
|
||||||
|
}, Collectors.toList())
|
||||||
|
));
|
||||||
|
|
||||||
|
// 转换为 Vo 对象
|
||||||
|
return groupedRecords.entrySet().stream()
|
||||||
|
.map(entry -> {
|
||||||
|
Recent10DayRecordsVo vo = new Recent10DayRecordsVo();
|
||||||
|
vo.setDate(entry.getKey());
|
||||||
|
vo.setRecords(entry.getValue());
|
||||||
|
return vo;
|
||||||
|
})
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
private Integer getAlarmType(Integer algorithmId) {
|
private Integer getAlarmType(Integer algorithmId) {
|
||||||
/*
|
/*
|
||||||
4 行人闯入
|
4 行人闯入
|
||||||
|
|||||||
@ -66,7 +66,7 @@ mqtt.username=admin
|
|||||||
mqtt.password=public
|
mqtt.password=public
|
||||||
#mqtt.url=tcp://139.159.226.224:1883
|
#mqtt.url=tcp://139.159.226.224:1883
|
||||||
#mqtt.url=ws://139.159.226.224:8083/mqtt
|
#mqtt.url=ws://139.159.226.224:8083/mqtt
|
||||||
mqtt.url=tcp://jxj.zhgdyun.com:1883
|
mqtt.url=wss://gszhdz.crpower.com.cn:8084/mqtt
|
||||||
# 消费者和提供者对应的客户端id以及默认topic
|
# 消费者和提供者对应的客户端id以及默认topic
|
||||||
mqtt.producer.clientId=mqttProd0729
|
mqtt.producer.clientId=mqttProd0729
|
||||||
mqtt.producer.defaultTopic=topic1
|
mqtt.producer.defaultTopic=topic1
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user