diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/CompanyController.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/CompanyController.java index aef875a3f..e78475a30 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/CompanyController.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/CompanyController.java @@ -236,6 +236,7 @@ public class CompanyController { @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 = "projectType", value = "是否展示,0否,1是", paramType = "body", required = true, dataType = "String"), + @ApiImplicitParam(name = "showVideoNum", value = "是否展示(在线)监控数量,0否,1是", paramType = "body", required = false, dataType = "String"), }) @PostMapping("/getComapnyStatisticsList") @PreAuthorize("@perm.hasSnAccess(#map['sn'])") diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/entity/bo/CompanyUsersByProjectSnBo.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/entity/bo/CompanyUsersByProjectSnBo.java new file mode 100644 index 000000000..c098a69cf --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/entity/bo/CompanyUsersByProjectSnBo.java @@ -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; + +} diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/SystemUserMapper.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/SystemUserMapper.java index 9879ad3ce..bb155681b 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/SystemUserMapper.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/SystemUserMapper.java @@ -8,6 +8,7 @@ import com.wflow.bean.do_.UserDeptDo; import com.wflow.bean.vo.OrgTreeVo; import com.zhgd.annotation.DataScope; 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.Param; import org.apache.ibatis.annotations.Select; @@ -272,4 +273,6 @@ public interface SystemUserMapper extends BaseMapper { */ @DataScope(includeTable = {"system_user"}) void updateRealNameFromWorker(@Param("workerId") Long workerId, @Param("workerName") String workerName); + + CompanyUsersByProjectSnBo getCompanyUsersByProjectSn(String projectSn); } diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/xml/SystemUserMapper.xml b/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/xml/SystemUserMapper.xml index 4fa3b1559..d8dda0451 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/xml/SystemUserMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/xml/SystemUserMapper.xml @@ -388,4 +388,18 @@ update system_user set real_name=#{workerName} where worker_id = #{workerId} + + diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/service/ISystemUserService.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/ISystemUserService.java index 26522d05a..35531ac80 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/service/ISystemUserService.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/ISystemUserService.java @@ -388,4 +388,6 @@ public interface ISystemUserService extends IService { * @return */ Map verifyLogin(Map map); + + List getCompanyUserIdsByProjectSn(String projectSn); } diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/CompanyServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/CompanyServiceImpl.java index 498268bb5..038d3dba0 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/CompanyServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/CompanyServiceImpl.java @@ -2,6 +2,7 @@ package com.zhgd.xmgl.modules.basicdata.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; @@ -357,6 +358,7 @@ public class CompanyServiceImpl extends ServiceImpl impl secondComapnyList = getGroupStatisticsCompany(secondComapnyList, childComapnyList); fistComapnyList = getGroupStatisticsCompany(fistComapnyList, secondComapnyList); fistComapnyList = filterCompanyByProject(fistComapnyList, map); + addVideoTotalAndOnlineNum(fistComapnyList, type); data.put("companyList", fistComapnyList); addSnForTree(data); } else if (Objects.equals(tempCompany.getCompanyType(), CompanyTypeEnum.REGIONS.getValue())) { @@ -373,6 +375,7 @@ public class CompanyServiceImpl extends ServiceImpl impl } fistComapnyList = getGroupStatisticsCompany(fistComapnyList, companyList); fistComapnyList = filterCompanyByProject(fistComapnyList, map); + addVideoTotalAndOnlineNum(fistComapnyList, type); data.put("companyList", fistComapnyList); } else if (Objects.equals(tempCompany.getCompanyType(), CompanyTypeEnum.CITIES.getValue())) { Company parentCompany = companyMapper.selectById(tempCompany.getParentId()); @@ -387,6 +390,7 @@ public class CompanyServiceImpl extends ServiceImpl impl } } companyList = filterCompanyByProject(companyList, map); + addVideoTotalAndOnlineNum(companyList, type); data.put("companyList", companyList); } else { Company parentCompany = companyMapper.selectById(tempCompany.getParentId()); @@ -396,6 +400,7 @@ public class CompanyServiceImpl extends ServiceImpl impl data.put("firstCompany", firstCompany); map.put("companyType", "5"); List projectList = getProjectEntityMaps(map, type, standardType); + addVideoTotalAndOnlineNum(projectList, type); data.put("projectList", projectList); } @@ -410,6 +415,24 @@ public class CompanyServiceImpl extends ServiceImpl impl return data; } + /** + * 添加在线离线数量 + * + * @param fistComapnyList + * @param type + */ + private void addVideoTotalAndOnlineNum(List 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 integerMap = VideoItemServiceImpl.getTotalAndOnlineNum(jsonObject, childName); + entityMap.putAll(integerMap); + } + } + } + private List getChildCompanyStatisticsList(Map map, Integer type, Integer standardType, List childComapnyList) { List projectList = getProjectEntityMaps(map, type, standardType); childComapnyList = getGroupStatisticsProject(childComapnyList, projectList); @@ -430,6 +453,20 @@ public class CompanyServiceImpl extends ServiceImpl impl List> standardList = standardDevMapper.selectProjecDevAlarmCount(map); projectList = addProjectStandardData(projectList, standardList); } + if (Objects.equals(MapUtils.getInteger(map, "showVideoNum"), 1)) { + List videoList = projectMapper.selectVideoList(map); + Map> projectSn2VideosMap = videoList.stream().collect(Collectors.groupingBy(entityMap -> Convert.toStr(entityMap.get("projectSn")))); + for (EntityMap projectMap : projectList) { + List 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; } @@ -458,8 +495,6 @@ public class CompanyServiceImpl extends ServiceImpl impl if (CollUtil.isNotEmpty(videoJa)) { for (int i = 0; i < videoJa.size(); i++) { JSONObject jsonObject = videoJa.getJSONObject(i); - Map integerMap = VideoItemServiceImpl.getTotalAndOnlineNum(jsonObject, childName); - jsonObject.putAll(integerMap); rtList.add(BeanUtil.toBean(jsonObject, EntityMapV2.class)); } } diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/SystemUserServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/SystemUserServiceImpl.java index c7f43c705..d7d630911 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/SystemUserServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/SystemUserServiceImpl.java @@ -1,6 +1,7 @@ package com.zhgd.xmgl.modules.basicdata.service.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.convert.Convert; import cn.hutool.core.date.*; import cn.hutool.core.util.IdUtil; 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.entity.sj.JwtPayloadUserInfo; 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.enums.SystemUserAccountTypeEnum; import com.zhgd.xmgl.modules.basicdata.mapper.*; @@ -1956,4 +1958,22 @@ public class SystemUserServiceImpl extends ServiceImpl getCompanyUserIdsByProjectSn(String projectSn) { + CompanyUsersByProjectSnBo bo = baseMapper.getCompanyUsersByProjectSn(projectSn); + ArrayList 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 list, String uids0) { + if (StrUtil.isNotBlank(uids0)) { + List ids = StrUtil.split(uids0, ",").stream().map(Convert::toLong).collect(Collectors.toList()); + list.addAll(ids); + } + } } diff --git a/src/main/java/com/zhgd/xmgl/modules/car/mapper/CarPassRecordMapper.java b/src/main/java/com/zhgd/xmgl/modules/car/mapper/CarPassRecordMapper.java index dc24e935d..433ba7ce9 100644 --- a/src/main/java/com/zhgd/xmgl/modules/car/mapper/CarPassRecordMapper.java +++ b/src/main/java/com/zhgd/xmgl/modules/car/mapper/CarPassRecordMapper.java @@ -20,7 +20,7 @@ import java.util.Map; * @version: V1.0 */ @Mapper -@DataScope(includeTable = "car_info") +@DataScope(includeTable = "car_pass_record") public interface CarPassRecordMapper extends BaseMapper { /** * 车辆通行记录统计 diff --git a/src/main/java/com/zhgd/xmgl/modules/policecamera/controller/WorkTicketController.java b/src/main/java/com/zhgd/xmgl/modules/policecamera/controller/WorkTicketController.java index 7d755ac65..dd0270966 100644 --- a/src/main/java/com/zhgd/xmgl/modules/policecamera/controller/WorkTicketController.java +++ b/src/main/java/com/zhgd/xmgl/modules/policecamera/controller/WorkTicketController.java @@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.zhgd.annotation.OperLog; 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.dto.OperateWorkTicketDto; import com.zhgd.xmgl.modules.policecamera.entity.dto.WorkTicketDto; @@ -131,8 +132,15 @@ public class WorkTicketController { @OperLog(operModul = "工作票管理", operType = "", operDesc = "开始、暂停、继续、结束工作票") @ApiOperation(value = "开始、暂停、继续、结束工作票", notes = "开始、暂停、继续、结束工作票", httpMethod = "POST") @PostMapping(value = "/operateWorkTicket") - public Result operateWorkTicket(@RequestBody OperateWorkTicketDto workTicketDto) { - workTicketService.operateWorkTicket(workTicketDto); + public Result operateWorkTicket(@RequestBody OperateWorkTicketDto workTicketDto) { + try { + workTicketService.operateWorkTicket(workTicketDto); + } catch (OpenPromptException e) { + Result data = new Result<>(); + data.setCode(1); + data.setMessage(e.getMessage()); + return Result.success(data); + } return Result.ok(); } diff --git a/src/main/java/com/zhgd/xmgl/modules/policecamera/entity/PoliceCameraItem.java b/src/main/java/com/zhgd/xmgl/modules/policecamera/entity/PoliceCameraItem.java index d3010d17d..d3ee2fd07 100644 --- a/src/main/java/com/zhgd/xmgl/modules/policecamera/entity/PoliceCameraItem.java +++ b/src/main/java/com/zhgd/xmgl/modules/policecamera/entity/PoliceCameraItem.java @@ -153,5 +153,9 @@ public class PoliceCameraItem implements Serializable { */ @ApiModelProperty(value = "默认码流类型:1、子码流,2、主码流,默认子码流") private Integer defaultStreamType; - + /** + * 封面路径 + */ + @ApiModelProperty(value = "封面路径") + private java.lang.String coverUrl; } diff --git a/src/main/java/com/zhgd/xmgl/modules/policecamera/entity/WorkTicket.java b/src/main/java/com/zhgd/xmgl/modules/policecamera/entity/WorkTicket.java index be65ec9f1..2bdaa5df0 100644 --- a/src/main/java/com/zhgd/xmgl/modules/policecamera/entity/WorkTicket.java +++ b/src/main/java/com/zhgd/xmgl/modules/policecamera/entity/WorkTicket.java @@ -130,4 +130,9 @@ public class WorkTicket implements Serializable { */ @ApiModelProperty(value = "班组ids") private java.lang.String teamIds; + /** + * 风险类型:1:一般风险;2:高风险; + */ + @ApiModelProperty(value = "风险类型:1:一般风险;2:高风险;") + private java.lang.Integer riskType; } diff --git a/src/main/java/com/zhgd/xmgl/modules/policecamera/entity/vo/CountWorkTicketVo.java b/src/main/java/com/zhgd/xmgl/modules/policecamera/entity/vo/CountWorkTicketVo.java index 3e54e5e9e..13a517c6a 100644 --- a/src/main/java/com/zhgd/xmgl/modules/policecamera/entity/vo/CountWorkTicketVo.java +++ b/src/main/java/com/zhgd/xmgl/modules/policecamera/entity/vo/CountWorkTicketVo.java @@ -17,4 +17,8 @@ public class CountWorkTicketVo { //暂停中 @ApiModelProperty("暂停中") private Integer pause; + //施工中高风险数量 + @ApiModelProperty("施工中高风险数量") + private Integer highRikeIngNum; + } diff --git a/src/main/java/com/zhgd/xmgl/modules/policecamera/entity/vo/PoliceCameraItemVo.java b/src/main/java/com/zhgd/xmgl/modules/policecamera/entity/vo/PoliceCameraItemVo.java index d0f916803..50c44da6e 100644 --- a/src/main/java/com/zhgd/xmgl/modules/policecamera/entity/vo/PoliceCameraItemVo.java +++ b/src/main/java/com/zhgd/xmgl/modules/policecamera/entity/vo/PoliceCameraItemVo.java @@ -28,4 +28,24 @@ public class PoliceCameraItemVo extends PoliceCameraItem { */ @ApiModelProperty(value = "分组名称") 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; } diff --git a/src/main/java/com/zhgd/xmgl/modules/policecamera/mapper/WorkTicketCameraRelMapper.java b/src/main/java/com/zhgd/xmgl/modules/policecamera/mapper/WorkTicketCameraRelMapper.java index 4f6fb299b..d1d3dcbd6 100644 --- a/src/main/java/com/zhgd/xmgl/modules/policecamera/mapper/WorkTicketCameraRelMapper.java +++ b/src/main/java/com/zhgd/xmgl/modules/policecamera/mapper/WorkTicketCameraRelMapper.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.zhgd.xmgl.modules.policecamera.entity.WorkTicketCameraRel; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * @Description: 工作票与执法记录仪关联关系表 * @author: pds @@ -12,4 +14,5 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface WorkTicketCameraRelMapper extends BaseMapper { + List findOccupiedTicketNumbers(Long ticketId); } diff --git a/src/main/java/com/zhgd/xmgl/modules/policecamera/mapper/xml/WorkTicketCameraRelMapper.xml b/src/main/java/com/zhgd/xmgl/modules/policecamera/mapper/xml/WorkTicketCameraRelMapper.xml index 73a041f5b..f8eef482b 100644 --- a/src/main/java/com/zhgd/xmgl/modules/policecamera/mapper/xml/WorkTicketCameraRelMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/policecamera/mapper/xml/WorkTicketCameraRelMapper.xml @@ -1,4 +1,12 @@ + + diff --git a/src/main/java/com/zhgd/xmgl/modules/policecamera/mapper/xml/WorkTicketMapper.xml b/src/main/java/com/zhgd/xmgl/modules/policecamera/mapper/xml/WorkTicketMapper.xml index f893e4ff6..9b918cf25 100644 --- a/src/main/java/com/zhgd/xmgl/modules/policecamera/mapper/xml/WorkTicketMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/policecamera/mapper/xml/WorkTicketMapper.xml @@ -29,6 +29,7 @@ ,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=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 where 1=1 diff --git a/src/main/java/com/zhgd/xmgl/modules/policecamera/service/IWorkTicketCameraRelService.java b/src/main/java/com/zhgd/xmgl/modules/policecamera/service/IWorkTicketCameraRelService.java index 2298d7217..fc0776c14 100644 --- a/src/main/java/com/zhgd/xmgl/modules/policecamera/service/IWorkTicketCameraRelService.java +++ b/src/main/java/com/zhgd/xmgl/modules/policecamera/service/IWorkTicketCameraRelService.java @@ -3,6 +3,8 @@ package com.zhgd.xmgl.modules.policecamera.service; import com.baomidou.mybatisplus.extension.service.IService; import com.zhgd.xmgl.modules.policecamera.entity.WorkTicketCameraRel; +import java.util.List; + /** * @Description: 工作票与执法记录仪关联关系表 * @author: pds @@ -10,5 +12,11 @@ import com.zhgd.xmgl.modules.policecamera.entity.WorkTicketCameraRel; * @version: V1.0 */ public interface IWorkTicketCameraRelService extends IService { - + /** + * 查询被占用的执法记录仪的工作票的编号 + * + * @param ticketId + * @return + */ + List findOccupiedTicketNumbers(Long ticketId); } diff --git a/src/main/java/com/zhgd/xmgl/modules/policecamera/service/impl/PoliceCameraItemServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/policecamera/service/impl/PoliceCameraItemServiceImpl.java index ad3f46107..aea389b10 100644 --- a/src/main/java/com/zhgd/xmgl/modules/policecamera/service/impl/PoliceCameraItemServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/policecamera/service/impl/PoliceCameraItemServiceImpl.java @@ -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.IPoliceCameraVideoConfigService; 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.ProjectVideoHkVqdMapper; import com.zhgd.xmgl.modules.worker.entity.WorkerInfo; @@ -94,6 +96,9 @@ public class PoliceCameraItemServiceImpl extends ServiceImpl queryPageList(HashMap param) { @@ -131,9 +136,18 @@ public class PoliceCameraItemServiceImpl extends ServiceImpl o1)); Map userMap = systemUserService.list(new LambdaQueryWrapper() .eq(SystemUser::getSn, projectSn)).stream().collect(Collectors.toMap(SystemUser::getUserId, Function.identity(), (o1, o2) -> o1)); + Map regionMap = qualityRegionService.list(new LambdaQueryWrapper() + .select(QualityRegion::getId, QualityRegion::getRegionName, QualityRegion::getProjectSn)) + .stream().collect(Collectors.toMap(QualityRegion::getId, Function.identity(), (o1, o2) -> o1)); 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.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; diff --git a/src/main/java/com/zhgd/xmgl/modules/policecamera/service/impl/WorkTicketCameraRelServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/policecamera/service/impl/WorkTicketCameraRelServiceImpl.java index 2f0cce462..5ac0e7c26 100644 --- a/src/main/java/com/zhgd/xmgl/modules/policecamera/service/impl/WorkTicketCameraRelServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/policecamera/service/impl/WorkTicketCameraRelServiceImpl.java @@ -6,6 +6,8 @@ import com.zhgd.xmgl.modules.policecamera.mapper.WorkTicketCameraRelMapper; import com.zhgd.xmgl.modules.policecamera.service.IWorkTicketCameraRelService; import org.springframework.stereotype.Service; +import java.util.List; + /** * @Description: 工作票与执法记录仪关联关系表 * @author: pds @@ -15,4 +17,8 @@ import org.springframework.stereotype.Service; @Service public class WorkTicketCameraRelServiceImpl extends ServiceImpl implements IWorkTicketCameraRelService { + @Override + public List findOccupiedTicketNumbers(Long ticketId) { + return baseMapper.findOccupiedTicketNumbers(ticketId); + } } diff --git a/src/main/java/com/zhgd/xmgl/modules/policecamera/service/impl/WorkTicketServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/policecamera/service/impl/WorkTicketServiceImpl.java index d81ac46ad..b31f9399b 100644 --- a/src/main/java/com/zhgd/xmgl/modules/policecamera/service/impl/WorkTicketServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/policecamera/service/impl/WorkTicketServiceImpl.java @@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 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.xmgl.call.api.PoliceCameraManufacturer; import com.zhgd.xmgl.call.factory.PoliceCameraManufacturerFactory; @@ -281,6 +282,7 @@ public class WorkTicketServiceImpl extends ServiceImpl workTicketNumbers = workTicketCameraRelService.findOccupiedTicketNumbers(workTicketDto.getId()); + if (CollUtil.isNotEmpty(workTicketNumbers)) { + throw new OpenPromptException(StrUtil.format("此工作票绑定的监控设备已被{}占用,无法恢复到施工中状态,请解绑后重试", StrUtil.join(",", workTicketNumbers))); + } + } + } + @Override public CountWorkTicketVo countWorkTicket(HashMap map) { return baseMapper.countWorkTicket(map); diff --git a/src/main/java/com/zhgd/xmgl/modules/project/entity/Project.java b/src/main/java/com/zhgd/xmgl/modules/project/entity/Project.java index 53563758b..d54f22f8b 100644 --- a/src/main/java/com/zhgd/xmgl/modules/project/entity/Project.java +++ b/src/main/java/com/zhgd/xmgl/modules/project/entity/Project.java @@ -363,7 +363,31 @@ public class Project implements Serializable { @Excel(name = "桥梁长度(m)", width = 15) @ApiModelProperty(value = "桥梁长度(m)") 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 */ diff --git a/src/main/java/com/zhgd/xmgl/modules/project/service/IEnableMessageDevRuleService.java b/src/main/java/com/zhgd/xmgl/modules/project/service/IEnableMessageDevRuleService.java index 75affd725..69cba7817 100644 --- a/src/main/java/com/zhgd/xmgl/modules/project/service/IEnableMessageDevRuleService.java +++ b/src/main/java/com/zhgd/xmgl/modules/project/service/IEnableMessageDevRuleService.java @@ -94,8 +94,7 @@ public interface IEnableMessageDevRuleService extends IService companyUsers = systemUserService.getCompanyUserIdsByProjectSn(rule.getProjectSn()); + if (CollUtil.isNotEmpty(companyUsers)) { + ids.addAll(companyUsers); + } + List systemUsers = systemUserService.getSystemUsersBySn(new MapBuilder().put(Cts.SN, rule.getProjectSn()).put(Cts.QUERY_TYPE, Cts.PROJECT_LEVEL).build()); + if (CollUtil.isNotEmpty(systemUsers)) { + List userIdSet = systemUsers.stream().map(SystemUser::getUserId).collect(Collectors.toList()); + ids.addAll(userIdSet); + } for (Long id : ids) { - noticeService.addUserNoticeAndApp(id, "设备报警通知", rule.getMessageTemplateContent(), type, tone); + noticeService.addUserNoticeAndApp(id, title, msg, type, tone); } } } diff --git a/src/main/java/com/zhgd/xmgl/modules/video/controller/AiAnalyseHardWareAlarmRecordController.java b/src/main/java/com/zhgd/xmgl/modules/video/controller/AiAnalyseHardWareAlarmRecordController.java index 80587e322..e7aedbc4e 100644 --- a/src/main/java/com/zhgd/xmgl/modules/video/controller/AiAnalyseHardWareAlarmRecordController.java +++ b/src/main/java/com/zhgd/xmgl/modules/video/controller/AiAnalyseHardWareAlarmRecordController.java @@ -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.vo.AiAnalyseHardWareAlarmTotalVo; 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.worker.entity.WorkerInfo; 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> getRecent10DayRecords(@RequestBody Map param) { + return Result.success(aiAnalyseHardWareAlarmRecordService.getRecent10DayRecords(param)); + } } diff --git a/src/main/java/com/zhgd/xmgl/modules/video/entity/bo/Recent10DayRecordsBo.java b/src/main/java/com/zhgd/xmgl/modules/video/entity/bo/Recent10DayRecordsBo.java new file mode 100644 index 000000000..c1415cc19 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/video/entity/bo/Recent10DayRecordsBo.java @@ -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; + +} diff --git a/src/main/java/com/zhgd/xmgl/modules/video/entity/vo/Recent10DayRecordsVo.java b/src/main/java/com/zhgd/xmgl/modules/video/entity/vo/Recent10DayRecordsVo.java new file mode 100644 index 000000000..a56c84ae6 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/video/entity/vo/Recent10DayRecordsVo.java @@ -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 records; +} diff --git a/src/main/java/com/zhgd/xmgl/modules/video/mapper/AiAnalyseHardWareAlarmRecordMapper.java b/src/main/java/com/zhgd/xmgl/modules/video/mapper/AiAnalyseHardWareAlarmRecordMapper.java index 3abbe36d3..baeca90be 100644 --- a/src/main/java/com/zhgd/xmgl/modules/video/mapper/AiAnalyseHardWareAlarmRecordMapper.java +++ b/src/main/java/com/zhgd/xmgl/modules/video/mapper/AiAnalyseHardWareAlarmRecordMapper.java @@ -6,6 +6,7 @@ import com.zhgd.annotation.DataScope; import com.zhgd.jeecg.common.mybatis.EntityMap; import com.zhgd.xmgl.base.entity.vo.SectorOneVo; 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.AiAnalyseHardWareAlarmTotalVo; import com.zhgd.xmgl.modules.worker.entity.WorkerInfo; @@ -173,4 +174,6 @@ public interface AiAnalyseHardWareAlarmRecordMapper extends BaseMapper map); + + List getRecent10DayRecords(Map param); } diff --git a/src/main/java/com/zhgd/xmgl/modules/video/mapper/xml/AiAnalyseHardWareAlarmRecordMapper.xml b/src/main/java/com/zhgd/xmgl/modules/video/mapper/xml/AiAnalyseHardWareAlarmRecordMapper.xml index 3c3179841..c953b21a5 100644 --- a/src/main/java/com/zhgd/xmgl/modules/video/mapper/xml/AiAnalyseHardWareAlarmRecordMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/video/mapper/xml/AiAnalyseHardWareAlarmRecordMapper.xml @@ -576,4 +576,73 @@ order by a.create_time desc limit 1 + + diff --git a/src/main/java/com/zhgd/xmgl/modules/video/mapper/xml/VideoItemMapper.xml b/src/main/java/com/zhgd/xmgl/modules/video/mapper/xml/VideoItemMapper.xml index 90b8ea699..8e77e3094 100644 --- a/src/main/java/com/zhgd/xmgl/modules/video/mapper/xml/VideoItemMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/video/mapper/xml/VideoItemMapper.xml @@ -172,7 +172,9 @@ FROM video_item t1 INNER JOIN project_video_config t2 ON t2.id = t1.video_id WHERE t2.is_enable = 1 - and t2.project_sn = #{projectSn} + + and t2.project_sn = #{projectSn} + order by t1.sort_num and t1.device_state = #{deviceState} diff --git a/src/main/java/com/zhgd/xmgl/modules/video/service/IAiAnalyseHardWareAlarmRecordService.java b/src/main/java/com/zhgd/xmgl/modules/video/service/IAiAnalyseHardWareAlarmRecordService.java index 194f9ee9d..50f7b8feb 100644 --- a/src/main/java/com/zhgd/xmgl/modules/video/service/IAiAnalyseHardWareAlarmRecordService.java +++ b/src/main/java/com/zhgd/xmgl/modules/video/service/IAiAnalyseHardWareAlarmRecordService.java @@ -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.vo.AiAnalyseHardWareAlarmTotalVo; 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 java.math.BigDecimal; @@ -174,4 +175,5 @@ public interface IAiAnalyseHardWareAlarmRecordService extends IService getRecent10DayRecords(Map param); } diff --git a/src/main/java/com/zhgd/xmgl/modules/video/service/impl/AiAnalyseHardWareAlarmRecordServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/video/service/impl/AiAnalyseHardWareAlarmRecordServiceImpl.java index 6bfd028ee..2613d048e 100644 --- a/src/main/java/com/zhgd/xmgl/modules/video/service/impl/AiAnalyseHardWareAlarmRecordServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/video/service/impl/AiAnalyseHardWareAlarmRecordServiceImpl.java @@ -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.video.entity.*; 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.AiAnalyseHardWareAlarmTrendVo; +import com.zhgd.xmgl.modules.video.entity.vo.Recent10DayRecordsVo; import com.zhgd.xmgl.modules.video.enums.AiAnalyseHardWareAlarmRecordHandleResultEnum; import com.zhgd.xmgl.modules.video.mapper.AiAnalyseHardWareAlarmRecordMapper; import com.zhgd.xmgl.modules.video.mapper.AiAnalyseHardWareRecordMapper; @@ -203,18 +205,8 @@ public class AiAnalyseHardWareAlarmRecordServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); - queryWrapper.lambda().eq(AiAnalyseHardWareRecord::getHardwareId, body.getString("hardwareId")); - AiAnalyseHardWareRecord aiAnalyseHardWareRecord = aiAnalyseHardWareRecordMapper.selectOne(queryWrapper); - if (aiAnalyseHardWareRecord == null) { - throw new OpenAlertException(MessageUtil.get("EquipmentNumIncorrectErr")); - } + String projectSn = null; 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 { if(StringUtils.isNotBlank(body.getString("remark"))) { VideoItem videoItem = videoItemService.getOne(Wrappers.lambdaQuery() @@ -222,12 +214,26 @@ public class AiAnalyseHardWareAlarmRecordServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); + 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); if (StringUtils.isNotEmpty(body.getString(IMAGE))) { String base64data = ""; @@ -760,6 +766,30 @@ public class AiAnalyseHardWareAlarmRecordServiceImpl extends ServiceImpl getRecent10DayRecords(Map param) { + List records = baseMapper.getRecent10DayRecords(param); + // 按日期分组 + Map> 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) { /* 4 行人闯入 diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index f50256159..b4c7aca9f 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -66,7 +66,7 @@ mqtt.username=admin mqtt.password=public #mqtt.url=tcp://139.159.226.224:1883 #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 mqtt.producer.clientId=mqttProd0729 mqtt.producer.defaultTopic=topic1