fuliqi
2024-08-06 a2a2209f983a2bb736b59c9217790740930e7017
Monitor结构更新
21个文件已修改
1020 ■■■■■ 已修改文件
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/TMonitor.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/TMonitorVO.java 496 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/calculate/CarClockAccuracyCalculation.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/calculate/CarDataIntegrityCalculation.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/calculate/CarDeviceSampleCalculation.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/calculate/CarInFoAccuracyCalculation.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/calculate/CarSnapshopDataCalculation.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/calculate/CarSnapshotDelayCalculation.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/calculate/FaceClockAccuracyCalculation.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/calculate/FaceDeviceSampleCalculation.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/calculate/FaceInFoAccuracyCalculation.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/calculate/FaceSnapshotDataCalculation.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/calculate/FaceSnapshotDelayCalculation.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/calculate/VideoOnlineCalculation.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/calculate/VideoUsabilityCalculation.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/YwThresholdServiceImpl.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/CarTask.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/FaceTask.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml 277 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/TMonitor.java
@@ -142,33 +142,12 @@
    @Excel(name = "类型编码 : [131.摄像机编码;132.网络摄像机编码;]")
    private Long lxbm;
    @TableField(exist = false)
    private Integer recovery;
    private Long deptId;
    public Long getDeptId() {
        return deptId;
    }
    public void setDeptId(Long deptId) {
        this.deptId = deptId;
    }
    public void setInstalledTime(Date installedTime) {
        this.installedTime = installedTime;
    }
    public Date getInstalledTime() {
        return installedTime;
    }
    public Integer getRecovery() {
        return recovery;
    }
    public void setRecovery(Integer recovery) {
        this.recovery = recovery;
    }
    public void setId(Long id)
@@ -477,7 +456,6 @@
                ", cameraDept='" + cameraDept + '\'' +
                ", hybm='" + hybm + '\'' +
                ", lxbm=" + lxbm +
                ", deptId=" + deptId +
                '}';
    }
}
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/TMonitorVO.java
@@ -3,6 +3,7 @@
import annotation.Excel;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ycl.system.entity.BaseEntity;
import lombok.Data;
import java.util.Date;
@@ -13,131 +14,193 @@
 * @author ruoyi
 * @date 2024-03-04
 */
public class TMonitorVO extends BaseEntity
{
@Data
public class TMonitorVO extends BaseEntity {
    private static final long serialVersionUID = 1L;
    /** $column.columnComment */
    /**
     * $column.columnComment
     */
    private Long id;
    /** 设备编码 */
    /**
     * 设备编码
     */
    @Excel(name = "设备编码")
    private String serialNumber;
    /** 设备名称 */
    /**
     * 设备名称
     */
    @Excel(name = "设备名称")
    private String name;
    /** 监控点位类型 [1.一类视频监控点;2.二类视频监控点;3.三类视频监控点;4.公安内部视频监控点;9.其他点位;] */
    /**
     * 监控点位类型 [1.一类视频监控点;2.二类视频监控点;3.三类视频监控点;4.公安内部视频监控点;9.其他点位;]
     */
    @Excel(name = "监控点位类型 [1.一类视频监控点;2.二类视频监控点;3.三类视频监控点;4.公安内部视频监控点;9.其他点位;]")
    private Long siteType;
    /** 摄像机Mac地址 */
    /**
     * 摄像机Mac地址
     */
    @Excel(name = "摄像机Mac地址")
    private String macAddr;
    /** 摄像机IPV4或IPV6地址 */
    /**
     * 摄像机IPV4或IPV6地址
     */
    @Excel(name = "摄像机IPV4或IPV6地址")
    private String ip;
    /** 摄像机功能类型[1.视频监控;2.车辆识别;3.人员识别;] 数据格式[填入多个值并以/隔开。例如  1/2] */
    /**
     * 摄像机功能类型[1.视频监控;2.车辆识别;3.人员识别;] 数据格式[填入多个值并以/隔开。例如  1/2]
     */
    @Excel(name = "摄像机功能类型[1.视频监控;2.车辆识别;3.人员识别;] 数据格式[填入多个值并以/隔开。例如  1/2]")
    private String cameraFunType;
    /** 设备经度,至少保留六位小数 */
    /**
     * 设备经度,至少保留六位小数
     */
    @Excel(name = "设备经度,至少保留六位小数")
    private String longitude;
    /** 设备维度,至少保留六位小数 */
    /**
     * 设备维度,至少保留六位小数
     */
    @Excel(name = "设备维度,至少保留六位小数")
    private String latitude;
    /** 摄像机采集区域参考字典表,数据多选以/隔开 */
    /**
     * 摄像机采集区域参考字典表,数据多选以/隔开
     */
    @Excel(name = "摄像机采集区域参考字典表,数据多选以/隔开")
    private String cameraCaptureArea;
    /** 设备状态 1/2 可用/不可用 */
    /**
     * 设备状态 1/2 可用/不可用
     */
    @Excel(name = "设备状态 1/2 可用/不可用")
    private Long onState;
    /** 行政区域 */
    /**
     * 行政区域
     */
    @Excel(name = "行政区域")
    private String civilCode;
    /** 是否集成设备,0/1 不是/是 */
    /**
     * 是否集成设备,0/1 不是/是
     */
    @Excel(name = "是否集成设备,0/1 不是/是")
    private Long integratedDevice;
    /** 摄像机品牌 [1.海康威视;2.大华;3.天地伟业;4.科达;5.安讯士;6.博世;7.亚安;8.英飞拓;9.宇视;10.海信;11.中星电子;12.明景;13.联想;14.中兴;15.索尼;16.三星;99.其它; */
    /**
     * 摄像机品牌 [1.海康威视;2.大华;3.天地伟业;4.科达;5.安讯士;6.博世;7.亚安;8.英飞拓;9.宇视;10.海信;11.中星电子;12.明景;13.联想;14.中兴;15.索尼;16.三星;99.其它;
     */
    @Excel(name = "摄像机品牌 [1.海康威视;2.大华;3.天地伟业;4.科达;5.安讯士;6.博世;7.亚安;8.英飞拓;9.宇视;10.海信;11.中星电子;12.明景;13.联想;14.中兴;15.索尼;16.三星;99.其它;")
    private Long cameraBrand;
    /** 安装地址 */
    /**
     * 安装地址
     */
    @Excel(name = "安装地址")
    private String address;
    /** 联网属性 0/1 已联网/未联网 */
    /**
     * 联网属性 0/1 已联网/未联网
     */
    @Excel(name = "联网属性 0/1 已联网/未联网")
    private Long netWorking;
    /** 所属辖区公安机关 */
    /**
     * 所属辖区公安机关
     */
    @Excel(name = "所属辖区公安机关")
    private String publicSecurity;
    /** 安装时间 yyyy-MM-dd HH:mm:ss */
    /**
     * 安装时间 yyyy-MM-dd HH:mm:ss
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "安装时间 yyyy-MM-dd HH:mm:ss", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date installedTime;
    /** 管理单位 */
    /**
     * 管理单位
     */
    @Excel(name = "管理单位")
    private String managementUnit;
    /** 管理单位联系方式 */
    /**
     * 管理单位联系方式
     */
    @Excel(name = "管理单位联系方式")
    private String muContactInfo;
    /** 录象保存天数 0 - 2147483647 */
    /**
     * 录象保存天数 0 - 2147483647
     */
    @Excel(name = "录象保存天数 0 - 2147483647")
    private Long storageDays;
    /** 监视方位 [1.东;2.西;3.南;4.北;5.东南;6.东北;7.西南;8.西北;9.全向;] */
    /**
     * 监视方位 [1.东;2.西;3.南;4.北;5.东南;6.东北;7.西南;8.西北;9.全向;]
     */
    @Excel(name = "监视方位 [1.东;2.西;3.南;4.北;5.东南;6.东北;7.西南;8.西北;9.全向;]")
    private Long monitorAzimuth;
    /** 摄像机场景预设照片URL */
    /**
     * 摄像机场景预设照片URL
     */
    @Excel(name = "摄像机场景预设照片URL")
    private String scenePhotoAddr;
    /** 设备型号 */
    /**
     * 设备型号
     */
    @Excel(name = "设备型号")
    private String model;
    /** 点位俗称 */
    /**
     * 点位俗称
     */
    @Excel(name = "点位俗称")
    private String siteVulgo;
    /** 摄像机类型 [1.球机;2.半球;3.固定枪机;4.遥控枪机;5.卡口枪机;99.未知; */
    /**
     * 摄像机类型 [1.球机;2.半球;3.固定枪机;4.遥控枪机;5.卡口枪机;99.未知;
     */
    @Excel(name = "摄像机类型 [1.球机;2.半球;3.固定枪机;4.遥控枪机;5.卡口枪机;99.未知;")
    private Long cameraType;
    /** 补光属性[1.无补光;2.红外补光;3.白光补光;9.其他补光;]  */
    /**
     * 补光属性[1.无补光;2.红外补光;3.白光补光;9.其他补光;]
     */
    @Excel(name = "补光属性[1.无补光;2.红外补光;3.白光补光;9.其他补光;] ")
    private Long cameraLightType;
    /** 摄像机编码格式 [1.MPEG-4;2.H.264;3.SVAC;4.H.265;] */
    /**
     * 摄像机编码格式 [1.MPEG-4;2.H.264;3.SVAC;4.H.265;]
     */
    @Excel(name = "摄像机编码格式 [1.MPEG-4;2.H.264;3.SVAC;4.H.265;]")
    private Long encodedFormat;
    /** 所属部门/行业 取值范围(多选) : [1.公安机关;2.环保部门;3.文博部门;4.医疗部门;5.旅游管理;6.新闻广电;7.食品医药监督管理部门;8.教育管理部门;9.检察院;10.法院;11.金融部门;12.交通部门;13.住房和城乡建设部门;14.水利部门;15.林业部门;16.安全生产监督部门;17.市政市容委;18.国土局;] 数据格式[填入多个值并以/隔开。例如  1/2] */
    /**
     * 所属部门/行业 取值范围(多选) : [1.公安机关;2.环保部门;3.文博部门;4.医疗部门;5.旅游管理;6.新闻广电;7.食品医药监督管理部门;8.教育管理部门;9.检察院;10.法院;11.金融部门;12.交通部门;13.住房和城乡建设部门;14.水利部门;15.林业部门;16.安全生产监督部门;17.市政市容委;18.国土局;] 数据格式[填入多个值并以/隔开。例如  1/2]
     */
    @Excel(name = "所属部门/行业 取值范围(多选) : [1.公安机关;2.环保部门;3.文博部门;4.医疗部门;5.旅游管理;6.新闻广电;7.食品医药监督管理部门;8.教育管理部门;9.检察院;10.法院;11.金融部门;12.交通部门;13.住房和城乡建设部门;14.水利部门;15.林业部门;16.安全生产监督部门;17.市政市容委;18.国土局;] 数据格式[填入多个值并以/隔开。例如  1/2]")
    private String cameraDept;
    /** 行业编码 [00.社会治安路面接入;01.社会治安社区接入;02.社会治安内部接入;03.社会治安其他接入;04.交通路面接入;05.交通卡口接入;06.交通内部接入;07.交通其他接入;08.城市管理接入;09.卫生环保接入;10.商检海关接入;11.教育部门接入;] */
    /**
     * 行业编码 [00.社会治安路面接入;01.社会治安社区接入;02.社会治安内部接入;03.社会治安其他接入;04.交通路面接入;05.交通卡口接入;06.交通内部接入;07.交通其他接入;08.城市管理接入;09.卫生环保接入;10.商检海关接入;11.教育部门接入;]
     */
    @Excel(name = "行业编码 [00.社会治安路面接入;01.社会治安社区接入;02.社会治安内部接入;03.社会治安其他接入;04.交通路面接入;05.交通卡口接入;06.交通内部接入;07.交通其他接入;08.城市管理接入;09.卫生环保接入;10.商检海关接入;11.教育部门接入;]")
    private String hybm;
    /** 类型编码 : [131.摄像机编码;132.网络摄像机编码;] */
    /**
     * 类型编码 : [131.摄像机编码;132.网络摄像机编码;]
     */
    @Excel(name = "类型编码 : [131.摄像机编码;132.网络摄像机编码;]")
    private Long lxbm;
@@ -147,376 +210,13 @@
    @Excel(name = "是否生成异常工单")
    private Long defaultOrder;
    @Excel(name ="异常恢复标识")
    @Excel(name = "异常恢复标识")
    private Long recovery;
    @Excel(name = "异常恢复时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date recoveryTime;
    private Long deptId;
    private String deptName;
    public String getDeptName() {
        return deptName;
    }
    public void setDeptName(String deptName) {
        this.deptName = deptName;
    }
    public Long getDefaultOrder() {
        return defaultOrder;
    }
    public void setDefaultOrder(Long defaultOrder) {
        this.defaultOrder = defaultOrder;
    }
    public void setInstalledTime(Date installedTime) {
        this.installedTime = installedTime;
    }
    public Date getInstalledTime() {
        return installedTime;
    }
    public Date getRecoveryTime() {
        return recoveryTime;
    }
    public void setRecoveryTime(Date recoveryTime) {
        this.recoveryTime = recoveryTime;
    }
    public Long getRecovery() {
        return recovery;
    }
    public void setRecovery(Long recovery) {
        this.recovery = recovery;
    }
    public String getReason() {
        return reason;
    }
    public void setReason(String reason) {
        this.reason = reason;
    }
    public void setId(Long id)
    {
        this.id = id;
    }
    public Long getId()
    {
        return id;
    }
    public void setSerialNumber(String serialNumber)
    {
        this.serialNumber = serialNumber;
    }
    public String getSerialNumber()
    {
        return serialNumber;
    }
    public void setName(String name)
    {
        this.name = name;
    }
    public String getName()
    {
        return name;
    }
    public void setSiteType(Long siteType)
    {
        this.siteType = siteType;
    }
    public Long getSiteType()
    {
        return siteType;
    }
    public void setMacAddr(String macAddr)
    {
        this.macAddr = macAddr;
    }
    public String getMacAddr()
    {
        return macAddr;
    }
    public void setIp(String ip)
    {
        this.ip = ip;
    }
    public String getIp()
    {
        return ip;
    }
    public void setCameraFunType(String cameraFunType)
    {
        this.cameraFunType = cameraFunType;
    }
    public String getCameraFunType()
    {
        return cameraFunType;
    }
    public void setLongitude(String longitude)
    {
        this.longitude = longitude;
    }
    public String getLongitude()
    {
        return longitude;
    }
    public void setLatitude(String latitude)
    {
        this.latitude = latitude;
    }
    public String getLatitude()
    {
        return latitude;
    }
    public void setCameraCaptureArea(String cameraCaptureArea)
    {
        this.cameraCaptureArea = cameraCaptureArea;
    }
    public String getCameraCaptureArea()
    {
        return cameraCaptureArea;
    }
    public void setOnState(Long onState)
    {
        this.onState = onState;
    }
    public Long getOnState()
    {
        return onState;
    }
    public void setCivilCode(String civilCode)
    {
        this.civilCode = civilCode;
    }
    public String getCivilCode()
    {
        return civilCode;
    }
    public void setIntegratedDevice(Long integratedDevice)
    {
        this.integratedDevice = integratedDevice;
    }
    public Long getIntegratedDevice()
    {
        return integratedDevice;
    }
    public void setCameraBrand(Long cameraBrand)
    {
        this.cameraBrand = cameraBrand;
    }
    public Long getCameraBrand()
    {
        return cameraBrand;
    }
    public void setAddress(String address)
    {
        this.address = address;
    }
    public String getAddress()
    {
        return address;
    }
    public void setNetWorking(Long netWorking)
    {
        this.netWorking = netWorking;
    }
    public Long getNetWorking()
    {
        return netWorking;
    }
    public void setPublicSecurity(String publicSecurity)
    {
        this.publicSecurity = publicSecurity;
    }
    public String getPublicSecurity()
    {
        return publicSecurity;
    }
    public void setManagementUnit(String managementUnit)
    {
        this.managementUnit = managementUnit;
    }
    public String getManagementUnit()
    {
        return managementUnit;
    }
    public void setMuContactInfo(String muContactInfo)
    {
        this.muContactInfo = muContactInfo;
    }
    public String getMuContactInfo()
    {
        return muContactInfo;
    }
    public void setStorageDays(Long storageDays)
    {
        this.storageDays = storageDays;
    }
    public Long getStorageDays()
    {
        return storageDays;
    }
    public void setMonitorAzimuth(Long monitorAzimuth)
    {
        this.monitorAzimuth = monitorAzimuth;
    }
    public Long getMonitorAzimuth()
    {
        return monitorAzimuth;
    }
    public void setScenePhotoAddr(String scenePhotoAddr)
    {
        this.scenePhotoAddr = scenePhotoAddr;
    }
    public String getScenePhotoAddr()
    {
        return scenePhotoAddr;
    }
    public void setModel(String model)
    {
        this.model = model;
    }
    public String getModel()
    {
        return model;
    }
    public void setSiteVulgo(String siteVulgo)
    {
        this.siteVulgo = siteVulgo;
    }
    public String getSiteVulgo()
    {
        return siteVulgo;
    }
    public void setCameraType(Long cameraType)
    {
        this.cameraType = cameraType;
    }
    public Long getCameraType()
    {
        return cameraType;
    }
    public void setCameraLightType(Long cameraLightType)
    {
        this.cameraLightType = cameraLightType;
    }
    public Long getCameraLightType()
    {
        return cameraLightType;
    }
    public void setEncodedFormat(Long encodedFormat)
    {
        this.encodedFormat = encodedFormat;
    }
    public Long getEncodedFormat()
    {
        return encodedFormat;
    }
    public void setCameraDept(String cameraDept)
    {
        this.cameraDept = cameraDept;
    }
    public String getCameraDept()
    {
        return cameraDept;
    }
    public void setHybm(String hybm)
    {
        this.hybm = hybm;
    }
    public String getHybm()
    {
        return hybm;
    }
    public void setLxbm(Long lxbm)
    {
        this.lxbm = lxbm;
    }
    public Long getLxbm()
    {
        return lxbm;
    }
    @Override
    public String toString() {
        return "TMonitorVO{" +
                "id=" + id +
                ", serialNumber='" + serialNumber + '\'' +
                ", name='" + name + '\'' +
                ", siteType=" + siteType +
                ", macAddr='" + macAddr + '\'' +
                ", ip='" + ip + '\'' +
                ", cameraFunType='" + cameraFunType + '\'' +
                ", longitude='" + longitude + '\'' +
                ", latitude='" + latitude + '\'' +
                ", cameraCaptureArea='" + cameraCaptureArea + '\'' +
                ", onState=" + onState +
                ", civilCode='" + civilCode + '\'' +
                ", integratedDevice=" + integratedDevice +
                ", cameraBrand=" + cameraBrand +
                ", address='" + address + '\'' +
                ", netWorking=" + netWorking +
                ", publicSecurity='" + publicSecurity + '\'' +
                ", installedTime=" + installedTime +
                ", managementUnit='" + managementUnit + '\'' +
                ", muContactInfo='" + muContactInfo + '\'' +
                ", storageDays=" + storageDays +
                ", monitorAzimuth=" + monitorAzimuth +
                ", scenePhotoAddr='" + scenePhotoAddr + '\'' +
                ", model='" + model + '\'' +
                ", siteVulgo='" + siteVulgo + '\'' +
                ", cameraType=" + cameraType +
                ", cameraLightType=" + cameraLightType +
                ", encodedFormat=" + encodedFormat +
                ", cameraDept='" + cameraDept + '\'' +
                ", hybm='" + hybm + '\'' +
                ", lxbm=" + lxbm +
                ", reason='" + reason + '\'' +
                ", defaultOrder=" + defaultOrder +
                ", recovery=" + recovery +
                ", recoveryTime=" + recoveryTime +
                ", deptName='" + deptName + '\'' +
                '}';
    }
}
ycl-server/src/main/java/com/ycl/calculate/CarClockAccuracyCalculation.java
@@ -3,9 +3,12 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ycl.platform.domain.entity.CheckIndexCar;
import com.ycl.platform.domain.entity.TMonitor;
import com.ycl.platform.domain.result.HK.DataIntegrityMonitoringResult;
import com.ycl.platform.domain.result.HK.SnapshotDataMonitorResult;
import com.ycl.platform.domain.result.HK.VehicleDeviceInspectionResult;
import com.ycl.platform.domain.vo.TMonitorVO;
import com.ycl.platform.mapper.CheckIndexCarMapper;
import com.ycl.platform.mapper.TMonitorMapper;
import com.ycl.platform.service.ICheckIndexCarService;
import com.ycl.platform.service.ITMonitorService;
import com.ycl.system.mapper.SysConfigMapper;
@@ -38,7 +41,7 @@
    @Autowired
    private CheckIndexCarMapper checkIndexCarMapper;
    @Autowired
    private ITMonitorService monitorService;
    private TMonitorMapper monitorMapper;
    @Autowired
    private ICheckIndexCarService checkIndexCarService;
@@ -54,16 +57,15 @@
            return;
        }
        //获得国标码为key的设备map
        Map<String, TMonitor> monitorMap = monitorService.list(new QueryWrapper<TMonitor>()
                        .in("serial_number", list.stream().map(VehicleDeviceInspectionResult::getExternalIndexCode).collect(Collectors.toList())))
                .stream().collect(Collectors.toMap(TMonitor::getSerialNumber, Function.identity()));
        //返回以国标码为key的设备map
        Map<String, TMonitorVO> monitorMap = monitorMapper.selectListByIds(list.stream().map(VehicleDeviceInspectionResult::getExternalIndexCode).collect(Collectors.toList()))
                .stream().collect(Collectors.toMap(TMonitorVO::getSerialNumber, Function.identity()));
        //获取省厅国标码集合
        List<String> provinceIds = getProvince();
        Map<String, AreaStats> areaStatsMap = new HashMap<>();
        for (VehicleDeviceInspectionResult result : list) {
            TMonitor monitor = monitorMap.get(result.getExternalIndexCode());
            TMonitorVO monitor = monitorMap.get(result.getExternalIndexCode());
            if (monitor == null) continue;
            String deptId = monitor.getDeptId().toString();
ycl-server/src/main/java/com/ycl/calculate/CarDataIntegrityCalculation.java
@@ -6,6 +6,7 @@
import com.ycl.platform.domain.entity.TMonitor;
import com.ycl.platform.domain.result.HK.CrossDetailResult;
import com.ycl.platform.domain.result.HK.DataIntegrityMonitoringResult;
import com.ycl.platform.domain.vo.TMonitorVO;
import com.ycl.platform.mapper.CheckIndexCarMapper;
import com.ycl.platform.mapper.TMonitorMapper;
import com.ycl.platform.service.ICheckIndexCarService;
@@ -34,7 +35,7 @@
    @Autowired
    private CheckIndexCarMapper checkIndexCarMapper;
    @Autowired
    private ITMonitorService monitorService;
    private TMonitorMapper monitorMapper;
    @Autowired
    private ICheckIndexCarService checkIndexCarService;
@@ -52,17 +53,15 @@
            return;
        }
        //返回以国标码为key的设备map
        //TODO:monitor去掉了deptId
        Map<String, TMonitor> monitorMap = monitorService.list(new QueryWrapper<TMonitor>()
                        .in("serial_number", list.stream().map(DataIntegrityMonitoringResult::getExternalIndexCode).collect(Collectors.toList())))
                .stream().collect(Collectors.toMap(TMonitor::getSerialNumber, Function.identity()));
        Map<String, TMonitorVO> monitorMap = monitorMapper.selectListByIds(list.stream().map(DataIntegrityMonitoringResult::getExternalIndexCode).collect(Collectors.toList()))
                .stream().collect(Collectors.toMap(TMonitorVO::getSerialNumber, Function.identity()));
        //获取省厅国标码集合
        List<String> provinceIds = getProvince();
        //获取重点点位集合
        List<String> importantIds = getImportant();
        Map<String, AreaStats> areaStatsMap = new HashMap<>();
        for (DataIntegrityMonitoringResult result : list) {
            TMonitor monitor = monitorMap.get(result.getExternalIndexCode());
            TMonitorVO monitor = monitorMap.get(result.getExternalIndexCode());
            if (monitor == null) continue;
            String deptId = monitor.getDeptId().toString();
            updateAreaStats(areaStatsMap, deptId, result, importantIds);
ycl-server/src/main/java/com/ycl/calculate/CarDeviceSampleCalculation.java
@@ -5,7 +5,9 @@
import com.ycl.platform.domain.entity.TMonitor;
import com.ycl.platform.domain.result.HK.DataIntegrityMonitoringResult;
import com.ycl.platform.domain.result.HK.VehicleDeviceSamplingResult;
import com.ycl.platform.domain.vo.TMonitorVO;
import com.ycl.platform.mapper.CheckIndexCarMapper;
import com.ycl.platform.mapper.TMonitorMapper;
import com.ycl.platform.service.ICheckIndexCarService;
import com.ycl.platform.service.ITMonitorService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -33,7 +35,7 @@
    @Autowired
    private CheckIndexCarMapper checkIndexCarMapper;
    @Autowired
    private ITMonitorService monitorService;
    private TMonitorMapper monitorMapper;
    @Autowired
    private ICheckIndexCarService checkIndexCarService;
@@ -57,17 +59,15 @@
            return;
        }
        //返回以国标码为key的设备map
        //TODO:monitor去掉了deptId
        Map<String, TMonitor> monitorMap = monitorService.list(new QueryWrapper<TMonitor>()
                        .in("serial_number", list.stream().map(VehicleDeviceSamplingResult::getExternalIndexCode).collect(Collectors.toList())))
                .stream().collect(Collectors.toMap(TMonitor::getSerialNumber, Function.identity()));
        Map<String, TMonitorVO> monitorMap = monitorMapper.selectListByIds(list.stream().map(VehicleDeviceSamplingResult::getExternalIndexCode).collect(Collectors.toList()))
                .stream().collect(Collectors.toMap(TMonitorVO::getSerialNumber, Function.identity()));
        //获取省厅国标码集合
        List<String> provinceIds = getProvince();
        //获取重点点位集合
        List<String> importantIds = getImportant();
        Map<String, AreaStats> areaStatsMap = new HashMap<>();
        for (VehicleDeviceSamplingResult result : list) {
            TMonitor monitor = monitorMap.get(result.getExternalIndexCode());
            TMonitorVO monitor = monitorMap.get(result.getExternalIndexCode());
            if (monitor == null) continue;
            String deptId = monitor.getDeptId().toString();
            updateAreaStats(areaStatsMap, deptId, result, importantIds);
ycl-server/src/main/java/com/ycl/calculate/CarInFoAccuracyCalculation.java
@@ -5,6 +5,8 @@
import com.ycl.platform.domain.entity.TMonitor;
import com.ycl.platform.domain.result.HK.CrossDetailResult;
import com.ycl.platform.domain.result.HK.SnapshotDataMonitorResult;
import com.ycl.platform.domain.result.HK.VehicleDeviceSamplingResult;
import com.ycl.platform.domain.vo.TMonitorVO;
import com.ycl.platform.mapper.CheckIndexCarMapper;
import com.ycl.platform.mapper.TMonitorMapper;
import com.ycl.platform.service.ICheckIndexCarService;
@@ -36,7 +38,7 @@
    @Autowired
    private CheckIndexCarMapper checkIndexCarMapper;
    @Autowired
    private ITMonitorService monitorService;
    private TMonitorMapper monitorMapper;
    @Autowired
    private ICheckIndexCarService checkIndexCarService;
@@ -52,16 +54,14 @@
            return;
        }
        //返回以国标码为key的设备map
        //TODO:monitor去掉了deptId
        Map<String, TMonitor> monitorMap = monitorService.list(new QueryWrapper<TMonitor>()
                        .in("serial_number", list.stream().map(CrossDetailResult::getExternalIndexCode).collect(Collectors.toList())))
                .stream().collect(Collectors.toMap(TMonitor::getSerialNumber, Function.identity()));
        Map<String, TMonitorVO> monitorMap = monitorMapper.selectListByIds(list.stream().map(CrossDetailResult::getExternalIndexCode).collect(Collectors.toList()))
                .stream().collect(Collectors.toMap(TMonitorVO::getSerialNumber, Function.identity()));
        //获取省厅国标码集合
        List<String> provinceIds = getProvince();
        Map<String, AreaStats> areaStatsMap = new HashMap<>();
        for (CrossDetailResult result : list) {
            TMonitor monitor = monitorMap.get(result.getExternalIndexCode());
            TMonitorVO monitor = monitorMap.get(result.getExternalIndexCode());
            if (monitor == null) continue;
            String deptId = monitor.getDeptId().toString();
ycl-server/src/main/java/com/ycl/calculate/CarSnapshopDataCalculation.java
@@ -3,8 +3,11 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ycl.platform.domain.entity.CheckIndexCar;
import com.ycl.platform.domain.entity.TMonitor;
import com.ycl.platform.domain.result.HK.CrossDetailResult;
import com.ycl.platform.domain.result.HK.SnapshotDataMonitorResult;
import com.ycl.platform.domain.vo.TMonitorVO;
import com.ycl.platform.mapper.CheckIndexCarMapper;
import com.ycl.platform.mapper.TMonitorMapper;
import com.ycl.platform.service.ICheckIndexCarService;
import com.ycl.platform.service.ITMonitorService;
import com.ycl.system.mapper.SysConfigMapper;
@@ -37,7 +40,7 @@
    @Autowired
    private SysConfigMapper sysConfigMapper;
    @Autowired
    private ITMonitorService monitorService;
    private TMonitorMapper monitorMapper;
    @Autowired
    private ICheckIndexCarService checkIndexCarService;
@@ -55,15 +58,14 @@
        }
        //获得国标码为key的设备map
        Map<String, TMonitor> monitorMap = monitorService.list(new QueryWrapper<TMonitor>()
                        .in("serial_number", list.stream().map(SnapshotDataMonitorResult::getExternalIndexCode).collect(Collectors.toList())))
                .stream().collect(Collectors.toMap(TMonitor::getSerialNumber, Function.identity()));
        Map<String, TMonitorVO> monitorMap = monitorMapper.selectListByIds(list.stream().map(SnapshotDataMonitorResult::getExternalIndexCode).collect(Collectors.toList()))
                .stream().collect(Collectors.toMap(TMonitorVO::getSerialNumber, Function.identity()));
        //获取省厅国标码集合
        List<String> provinceIds = getProvince();
        Map<String, AreaStats> areaStatsMap = new HashMap<>();
        for (SnapshotDataMonitorResult result : list) {
            TMonitor monitor = monitorMap.get(result.getExternalIndexCode());
            TMonitorVO monitor = monitorMap.get(result.getExternalIndexCode());
            if (monitor == null) continue;
            String deptId = monitor.getDeptId().toString();
ycl-server/src/main/java/com/ycl/calculate/CarSnapshotDelayCalculation.java
@@ -5,7 +5,9 @@
import com.ycl.platform.domain.entity.TMonitor;
import com.ycl.platform.domain.result.HK.SnapshotDataMonitorResult;
import com.ycl.platform.domain.result.HK.SnapshotDelayMonitorResult;
import com.ycl.platform.domain.vo.TMonitorVO;
import com.ycl.platform.mapper.CheckIndexCarMapper;
import com.ycl.platform.mapper.TMonitorMapper;
import com.ycl.platform.service.ICheckIndexCarService;
import com.ycl.platform.service.ITMonitorService;
import com.ycl.system.mapper.SysConfigMapper;
@@ -36,7 +38,7 @@
    @Autowired
    private CheckIndexCarMapper checkIndexCarMapper;
    @Autowired
    private ITMonitorService monitorService;
    private TMonitorMapper monitorMapper;
    @Autowired
    private ICheckIndexCarService checkIndexCarService;
@@ -58,15 +60,14 @@
        }
        //获得国标码为key的设备map
        Map<String, TMonitor> monitorMap = monitorService.list(new QueryWrapper<TMonitor>()
                        .in("serial_number", list.stream().map(SnapshotDelayMonitorResult::getExternalIndexCode).collect(Collectors.toList())))
                .stream().collect(Collectors.toMap(TMonitor::getSerialNumber, Function.identity()));
        Map<String, TMonitorVO> monitorMap = monitorMapper.selectListByIds(list.stream().map(SnapshotDelayMonitorResult::getExternalIndexCode).collect(Collectors.toList()))
                .stream().collect(Collectors.toMap(TMonitorVO::getSerialNumber, Function.identity()));
        //获取省厅国标码集合
        List<String> provinceIds = getProvince();
        Map<String, AreaStats> areaStatsMap = new HashMap<>();
        for (SnapshotDelayMonitorResult result : list) {
            TMonitor monitor = monitorMap.get(result.getExternalIndexCode());
            TMonitorVO monitor = monitorMap.get(result.getExternalIndexCode());
            if (monitor == null) continue;
            String deptId = monitor.getDeptId().toString();
ycl-server/src/main/java/com/ycl/calculate/FaceClockAccuracyCalculation.java
@@ -5,7 +5,10 @@
import com.ycl.platform.domain.entity.TMonitor;
import com.ycl.platform.domain.result.HK.FaceDeviceInspectionResult;
import com.ycl.platform.domain.result.HK.FaceDeviceInspectionResult;
import com.ycl.platform.domain.result.HK.SnapshotDelayMonitorResult;
import com.ycl.platform.domain.vo.TMonitorVO;
import com.ycl.platform.mapper.CheckIndexFaceMapper;
import com.ycl.platform.mapper.TMonitorMapper;
import com.ycl.platform.service.ICheckIndexFaceService;
import com.ycl.platform.service.ITMonitorService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -33,7 +36,7 @@
    @Autowired
    private CheckIndexFaceMapper CheckIndexFaceMapper;
    @Autowired
    private ITMonitorService monitorService;
    private TMonitorMapper monitorMapper;
    @Autowired
    private ICheckIndexFaceService checkIndexFaceService;
@@ -50,15 +53,14 @@
        }
        //获得国标码为key的设备map
        Map<String, TMonitor> monitorMap = monitorService.list(new QueryWrapper<TMonitor>()
                        .in("serial_number", list.stream().map(FaceDeviceInspectionResult::getExternalIndexCode).collect(Collectors.toList())))
                .stream().collect(Collectors.toMap(TMonitor::getSerialNumber, Function.identity()));
        Map<String, TMonitorVO> monitorMap = monitorMapper.selectListByIds(list.stream().map(FaceDeviceInspectionResult::getExternalIndexCode).collect(Collectors.toList()))
                .stream().collect(Collectors.toMap(TMonitorVO::getSerialNumber, Function.identity()));
        //获取省厅国标码集合
        List<String> provinceIds = getProvince();
        Map<String, AreaStats> areaStatsMap = new HashMap<>();
        for (FaceDeviceInspectionResult result : list) {
            TMonitor monitor = monitorMap.get(result.getExternalIndexCode());
            TMonitorVO monitor = monitorMap.get(result.getExternalIndexCode());
            if (monitor == null) continue;
            String deptId = monitor.getDeptId().toString();
ycl-server/src/main/java/com/ycl/calculate/FaceDeviceSampleCalculation.java
@@ -3,8 +3,11 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ycl.platform.domain.entity.CheckIndexFace;
import com.ycl.platform.domain.entity.TMonitor;
import com.ycl.platform.domain.result.HK.FaceDeviceInspectionResult;
import com.ycl.platform.domain.result.HK.FaceDeviceSamplingResult;
import com.ycl.platform.domain.vo.TMonitorVO;
import com.ycl.platform.mapper.CheckIndexFaceMapper;
import com.ycl.platform.mapper.TMonitorMapper;
import com.ycl.platform.service.ICheckIndexFaceService;
import com.ycl.platform.service.ITMonitorService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -31,7 +34,7 @@
    @Autowired
    private CheckIndexFaceMapper checkIndexFaceMapper;
    @Autowired
    private ITMonitorService monitorService;
    private TMonitorMapper monitorMapper;
    @Autowired
    private ICheckIndexFaceService checkIndexFaceService;
@@ -50,15 +53,13 @@
            return;
        }
        //返回以国标码为key的设备map
        //TODO:monitor去掉了deptId
        Map<String, TMonitor> monitorMap = monitorService.list(new QueryWrapper<TMonitor>()
                        .in("serial_number", list.stream().map(FaceDeviceSamplingResult::getExternalIndexCode).collect(Collectors.toList())))
                .stream().collect(Collectors.toMap(TMonitor::getSerialNumber, Function.identity()));
        Map<String, TMonitorVO> monitorMap = monitorMapper.selectListByIds(list.stream().map(FaceDeviceSamplingResult::getExternalIndexCode).collect(Collectors.toList()))
                .stream().collect(Collectors.toMap(TMonitorVO::getSerialNumber, Function.identity()));
        //获取省厅国标码集合
        List<String> provinceIds = getProvince();
        Map<String, AreaStats> areaStatsMap = new HashMap<>();
        for (FaceDeviceSamplingResult result : list) {
            TMonitor monitor = monitorMap.get(result.getExternalIndexCode());
            TMonitorVO monitor = monitorMap.get(result.getExternalIndexCode());
            if (monitor == null) continue;
            String deptId = monitor.getDeptId().toString();
            updateAreaStats(areaStatsMap, deptId, result);
ycl-server/src/main/java/com/ycl/calculate/FaceInFoAccuracyCalculation.java
@@ -4,7 +4,9 @@
import com.ycl.platform.domain.entity.CheckIndexCar;
import com.ycl.platform.domain.entity.CheckIndexFace;
import com.ycl.platform.domain.entity.TMonitor;
import com.ycl.platform.domain.result.HK.FaceDeviceSamplingResult;
import com.ycl.platform.domain.result.HK.MonitoringDetailResult;
import com.ycl.platform.domain.vo.TMonitorVO;
import com.ycl.platform.mapper.CheckIndexFaceMapper;
import com.ycl.platform.mapper.TMonitorMapper;
import com.ycl.platform.service.ICheckIndexFaceService;
@@ -35,7 +37,7 @@
    @Autowired
    private ICheckIndexFaceService checkIndexFaceService;
    @Autowired
    private ITMonitorService monitorService;
    private TMonitorMapper monitorMapper;
    //区域车辆信息采集准确率的内部类
    private static class AreaStats {
@@ -49,16 +51,14 @@
            return;
        }
        //返回以国标码为key的设备map
        //TODO:monitor去掉了deptId
        Map<String, TMonitor> monitorMap = monitorService.list(new QueryWrapper<TMonitor>()
                        .in("serial_number", list.stream().map(MonitoringDetailResult::getExternalIndexCode).collect(Collectors.toList())))
                .stream().collect(Collectors.toMap(TMonitor::getSerialNumber, Function.identity()));
        Map<String, TMonitorVO> monitorMap = monitorMapper.selectListByIds(list.stream().map(MonitoringDetailResult::getExternalIndexCode).collect(Collectors.toList()))
                .stream().collect(Collectors.toMap(TMonitorVO::getSerialNumber, Function.identity()));
        //获取省厅国标码集合
        List<String> provinceIds = getProvince();
        Map<String, AreaStats> areaStatsMap = new HashMap<>();
        for (MonitoringDetailResult result : list) {
            TMonitor monitor = monitorMap.get(result.getExternalIndexCode());
            TMonitorVO monitor = monitorMap.get(result.getExternalIndexCode());
            if (monitor == null) continue;
            String deptId = monitor.getDeptId().toString();
ycl-server/src/main/java/com/ycl/calculate/FaceSnapshotDataCalculation.java
@@ -3,8 +3,11 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ycl.platform.domain.entity.CheckIndexFace;
import com.ycl.platform.domain.entity.TMonitor;
import com.ycl.platform.domain.result.HK.MonitoringDetailResult;
import com.ycl.platform.domain.result.HK.SnapshotDataMonitorResult;
import com.ycl.platform.domain.vo.TMonitorVO;
import com.ycl.platform.mapper.CheckIndexFaceMapper;
import com.ycl.platform.mapper.TMonitorMapper;
import com.ycl.platform.service.ICheckIndexFaceService;
import com.ycl.platform.service.ITMonitorService;
import com.ycl.system.mapper.SysConfigMapper;
@@ -40,7 +43,7 @@
    @Autowired
    private SysConfigMapper sysConfigMapper;
    @Autowired
    private ITMonitorService monitorService;
    private TMonitorMapper monitorMapper;
    //区域人脸点位在线指标的内部类
    private static class AreaStats {
@@ -55,16 +58,15 @@
            return;
        }
        //返回以国标码为key的设备map
        Map<String, TMonitor> monitorMap = monitorService.list(new QueryWrapper<TMonitor>()
                        .in("serial_number", list.stream().map(SnapshotDataMonitorResult::getExternalIndexCode).collect(Collectors.toList())))
                .stream().collect(Collectors.toMap(TMonitor::getSerialNumber, Function.identity()));
        Map<String, TMonitorVO> monitorMap = monitorMapper.selectListByIds(list.stream().map(SnapshotDataMonitorResult::getExternalIndexCode).collect(Collectors.toList()))
                .stream().collect(Collectors.toMap(TMonitorVO::getSerialNumber, Function.identity()));
        //获取省厅国标码集合
        List<String> provinceIds = getProvince();
        Map<String, AreaStats> areaStatsMap = new HashMap<>();
        for (SnapshotDataMonitorResult result : list) {
            TMonitor monitor = monitorMap.get(result.getExternalIndexCode());
            TMonitorVO monitor = monitorMap.get(result.getExternalIndexCode());
            if (monitor == null) continue;
            String deptId = monitor.getDeptId().toString();
ycl-server/src/main/java/com/ycl/calculate/FaceSnapshotDelayCalculation.java
@@ -3,8 +3,11 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ycl.platform.domain.entity.CheckIndexFace;
import com.ycl.platform.domain.entity.TMonitor;
import com.ycl.platform.domain.result.HK.SnapshotDataMonitorResult;
import com.ycl.platform.domain.result.HK.SnapshotDelayMonitorResult;
import com.ycl.platform.domain.vo.TMonitorVO;
import com.ycl.platform.mapper.CheckIndexFaceMapper;
import com.ycl.platform.mapper.TMonitorMapper;
import com.ycl.platform.service.ICheckIndexFaceService;
import com.ycl.platform.service.ITMonitorService;
import com.ycl.system.mapper.SysConfigMapper;
@@ -31,7 +34,7 @@
    @Autowired
    private CheckIndexFaceMapper checkIndexFaceMapper;
    @Autowired
    private ITMonitorService monitorService;
    private TMonitorMapper monitorMapper;
    @Autowired
    private ICheckIndexFaceService checkIndexFaceService;
@@ -53,15 +56,14 @@
        }
        //获得国标码为key的设备map
        Map<String, TMonitor> monitorMap = monitorService.list(new QueryWrapper<TMonitor>()
                        .in("serial_number", list.stream().map(SnapshotDelayMonitorResult::getExternalIndexCode).collect(Collectors.toList())))
                .stream().collect(Collectors.toMap(TMonitor::getSerialNumber, Function.identity()));
        Map<String, TMonitorVO> monitorMap = monitorMapper.selectListByIds(list.stream().map(SnapshotDelayMonitorResult::getExternalIndexCode).collect(Collectors.toList()))
                .stream().collect(Collectors.toMap(TMonitorVO::getSerialNumber, Function.identity()));
        //获取省厅国标码集合
        List<String> provinceIds = getProvince();
        Map<String, AreaStats> areaStatsMap = new HashMap<>();
        for (SnapshotDelayMonitorResult result : list) {
            TMonitor monitor = monitorMap.get(result.getExternalIndexCode());
            TMonitorVO monitor = monitorMap.get(result.getExternalIndexCode());
            if (monitor == null) continue;
            String deptId = monitor.getDeptId().toString();
ycl-server/src/main/java/com/ycl/calculate/VideoOnlineCalculation.java
@@ -5,7 +5,9 @@
import com.ycl.platform.domain.entity.TMonitor;
import com.ycl.platform.domain.result.HK.SnapshotDelayMonitorResult;
import com.ycl.platform.domain.result.UY.QueryVqdResult;
import com.ycl.platform.domain.vo.TMonitorVO;
import com.ycl.platform.mapper.CheckIndexVideoMapper;
import com.ycl.platform.mapper.TMonitorMapper;
import com.ycl.platform.service.ICheckIndexFaceService;
import com.ycl.platform.service.ICheckIndexVideoService;
import com.ycl.platform.service.ITMonitorService;
@@ -36,7 +38,7 @@
    @Autowired
    private CheckIndexVideoMapper checkIndexVideoMapper;
    @Autowired
    private ITMonitorService monitorService;
    private TMonitorMapper monitorMapper;
    @Autowired
    private ICheckIndexVideoService checkIndexVideoService;
@@ -55,9 +57,8 @@
        }
        //获得国标码为key的设备map
        Map<String, TMonitor> monitorMap = monitorService.list(new QueryWrapper<TMonitor>()
                        .in("serial_number", list.stream().map(QueryVqdResult::getDeviceId).collect(Collectors.toList())))
                .stream().collect(Collectors.toMap(TMonitor::getSerialNumber, Function.identity()));
        Map<String, TMonitorVO> monitorMap = monitorMapper.selectListByIds(list.stream().map(QueryVqdResult::getDeviceId).collect(Collectors.toList()))
                .stream().collect(Collectors.toMap(TMonitorVO::getSerialNumber, Function.identity()));
        //获取省厅国标码集合
        List<String> provinceIds = getProvince();
        //重点点位集合
@@ -65,7 +66,7 @@
        Map<String, AreaStats> areaStatsMap = new HashMap<>();
        for (QueryVqdResult result : list) {
            TMonitor monitor = monitorMap.get(result.getDeviceId());
            TMonitorVO monitor = monitorMap.get(result.getDeviceId());
            if (monitor == null) continue;
            String deptId = monitor.getDeptId().toString();
ycl-server/src/main/java/com/ycl/calculate/VideoUsabilityCalculation.java
@@ -5,7 +5,9 @@
import com.ycl.platform.domain.entity.TMonitor;
import com.ycl.platform.domain.param.UY.RecordMetaDSumParam;
import com.ycl.platform.domain.result.UY.QueryVqdResult;
import com.ycl.platform.domain.vo.TMonitorVO;
import com.ycl.platform.mapper.CheckIndexVideoMapper;
import com.ycl.platform.mapper.TMonitorMapper;
import com.ycl.platform.service.ICheckIndexVideoService;
import com.ycl.platform.service.ITMonitorService;
import constant.ApiConstants;
@@ -34,7 +36,7 @@
    @Autowired
    private CheckIndexVideoMapper checkIndexVideoMapper;
    @Autowired
    private ITMonitorService monitorService;
    private TMonitorMapper monitorMapper;
    @Autowired
    private ICheckIndexVideoService checkIndexVideoService;
@@ -53,9 +55,8 @@
        }
        //获得国标码为key的设备map
        Map<String, TMonitor> monitorMap = monitorService.list(new QueryWrapper<TMonitor>()
                        .in("serial_number", list.stream().map(RecordMetaDSumParam::getDeviceId).collect(Collectors.toList())))
                .stream().collect(Collectors.toMap(TMonitor::getSerialNumber, Function.identity()));
        Map<String, TMonitorVO> monitorMap = monitorMapper.selectListByIds(list.stream().map(RecordMetaDSumParam::getDeviceId).collect(Collectors.toList()))
                .stream().collect(Collectors.toMap(TMonitorVO::getSerialNumber, Function.identity()));
        //获取省厅国标码集合
        List<String> provinceIds = getProvince();
        //重点点位集合
@@ -63,7 +64,7 @@
        Map<String, AreaStats> areaStatsMap = new HashMap<>();
        for (RecordMetaDSumParam result : list) {
            TMonitor monitor = monitorMap.get(result.getDeviceId());
            TMonitorVO monitor = monitorMap.get(result.getDeviceId());
            if (monitor == null) continue;
            String deptId = monitor.getDeptId().toString();
ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java
@@ -90,4 +90,6 @@
     * @return 数据
     */
    List<Map<String, Object>> home(HomeQuery monitorQuery);
    List<TMonitorVO> selectListByIds(List<String> list);
}
ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java
@@ -26,7 +26,7 @@
     * @param workOrderList
     * @return
     */
    Boolean innerAdd(List<WorkOrder> workOrderList) throws Exception;
    Boolean innerAdd(List<WorkOrder> workOrderList);
    /**
     * 添加
ycl-server/src/main/java/com/ycl/platform/service/impl/YwThresholdServiceImpl.java
@@ -2,14 +2,17 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ycl.platform.domain.entity.WorkOrder;
import com.ycl.platform.domain.entity.YwThreshold;
import com.ycl.platform.domain.result.HK.FaceDeviceInspectionResult;
import com.ycl.platform.domain.result.HK.VehicleDeviceInspectionResult;
import com.ycl.platform.mapper.YwThresholdMapper;
import com.ycl.platform.service.IYwThresholdService;
import com.ycl.platform.service.WorkOrderService;
import constant.YwThreadConstants;
import enumeration.CompareType;
import enumeration.general.BusinessTypeEnum;
import enumeration.general.WorkOrderStatusEnum;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -30,6 +33,9 @@
public class YwThresholdServiceImpl extends ServiceImpl<YwThresholdMapper, YwThreshold> implements IYwThresholdService {
    @Autowired
    private YwThresholdMapper ywThresholdMapper;
    @Autowired
    private WorkOrderService workOrderService;
    /**
     * 查询运维阈值
@@ -120,9 +126,9 @@
    public void faceCheck(List<FaceDeviceInspectionResult> list) {
        Map<String, YwThreshold> thresholdMap = getYwThresholdMap(BusinessTypeEnum.FACE.name());
        //准备下发工单集合
        List<FaceDeviceInspectionResult> distributeList = new ArrayList<>();
        List<WorkOrder> distributeList = new ArrayList<>();
        //准备自动生成工单集合
        List<FaceDeviceInspectionResult> workOrderList = new ArrayList<>();
        List<WorkOrder> workOrderList = new ArrayList<>();
        //处理接口数据
        for (FaceDeviceInspectionResult result : list) {
            if (result == null) {
@@ -131,24 +137,26 @@
            }
            //检查时钟准确率
            Float clockPercent = result.getSnapClock().getClockPercent();
            check(YwThreadConstants.Face_ClockPercent, clockPercent, result, thresholdMap, distributeList, workOrderList, CompareType.LESS_THAN_EQ);
            check(YwThreadConstants.Face_ClockPercent, clockPercent, result.getExternalIndexCode(), thresholdMap, distributeList, workOrderList, CompareType.LESS_THAN_EQ,"");
            //检查数据及时率
            Float timelyPercent = result.getSnapTimely().getTimelyPercent();
            check(YwThreadConstants.Face_TimelyPercent, timelyPercent, result, thresholdMap, distributeList, workOrderList, CompareType.LESS_THAN_EQ);
            check(YwThreadConstants.Face_TimelyPercent, timelyPercent, result.getExternalIndexCode(), thresholdMap, distributeList, workOrderList, CompareType.LESS_THAN_EQ,"");
            //检查持续无数据天数
            Integer continueNoDataCount = result.getContinueNoDataCount();
            check(YwThreadConstants.Face_ContinueNoDataCount, continueNoDataCount, result, thresholdMap, distributeList, workOrderList, CompareType.MORE_THAN_EQ);
            check(YwThreadConstants.Face_ContinueNoDataCount, continueNoDataCount, result.getExternalIndexCode(), thresholdMap, distributeList, workOrderList, CompareType.MORE_THAN_EQ,"");
            //检查不唯一数据量
            Integer nouniqueCount = result.getSnapUnique().getNouniqueCount();
            check(YwThreadConstants.Face_NouniqueCount, nouniqueCount, result, thresholdMap, distributeList, workOrderList, CompareType.MORE_THAN_EQ);
            check(YwThreadConstants.Face_NouniqueCount, nouniqueCount, result.getExternalIndexCode(), thresholdMap, distributeList, workOrderList, CompareType.MORE_THAN_EQ,"");
            //检查人脸低评分率
            Float lowScorePercent = result.getSnapValidity().getLowScorePercent();
            check(YwThreadConstants.Face_LowScorePercent, lowScorePercent, result, thresholdMap, distributeList, workOrderList, CompareType.LESS_THAN_EQ);
            check(YwThreadConstants.Face_LowScorePercent, lowScorePercent, result.getExternalIndexCode(), thresholdMap, distributeList, workOrderList, CompareType.LESS_THAN_EQ,"");
            //检查建模失败率
            Float failPercent = result.getSnapValidity().getFailPercent();
            check(YwThreadConstants.Face_FailPercent, failPercent, result, thresholdMap, distributeList, workOrderList, CompareType.LESS_THAN_EQ);
            check(YwThreadConstants.Face_FailPercent, failPercent, result.getExternalIndexCode(), thresholdMap, distributeList, workOrderList, CompareType.LESS_THAN_EQ,"");
        }
        //TODO:待处理集合添加工单
        /** 添加工单 */
        workOrderService.innerAdd(workOrderList);
        workOrderService.innerAdd(distributeList);
    }
    /**
@@ -160,9 +168,9 @@
    public void carCheck(List<VehicleDeviceInspectionResult> list) {
        Map<String, YwThreshold> thresholdMap = getYwThresholdMap(BusinessTypeEnum.CAR.name());
        //准备下发工单集合
        List<VehicleDeviceInspectionResult> distributeList = new ArrayList<>();
        List<WorkOrder> distributeList = new ArrayList<>();
        //准备自动生成工单集合
        List<VehicleDeviceInspectionResult> workOrderList = new ArrayList<>();
        List<WorkOrder> workOrderList = new ArrayList<>();
        //处理接口数据
        for (VehicleDeviceInspectionResult result : list) {
            if (result == null) {
@@ -171,24 +179,26 @@
            }
            //检查持续无数据天数
            Integer continueNoDataCount = result.getContinueNoDataCount();
            check(YwThreadConstants.Car_ContinueNoDataCount, continueNoDataCount, result, thresholdMap, distributeList, workOrderList, CompareType.MORE_THAN_EQ);
            check(YwThreadConstants.Car_ContinueNoDataCount, continueNoDataCount, result.getExternalIndexCode(), thresholdMap, distributeList, workOrderList, CompareType.MORE_THAN_EQ,"");
            //检查时钟准确率
            Float clockPercent = result.getSnapClock().getClockPercent();
            check(YwThreadConstants.Car_ClockPercent, clockPercent, result, thresholdMap, distributeList, workOrderList, CompareType.LESS_THAN_EQ);
            check(YwThreadConstants.Car_ClockPercent, clockPercent, result.getExternalIndexCode(), thresholdMap, distributeList, workOrderList, CompareType.LESS_THAN_EQ,"");
            //检查数据及时率
            Float timelyPercentResult = result.getSnapTimely().getTimelyPercent();
            check(YwThreadConstants.Car_TimelyPercent, timelyPercentResult, result, thresholdMap, distributeList, workOrderList, CompareType.LESS_THAN_EQ);
            check(YwThreadConstants.Car_TimelyPercent, timelyPercentResult, result.getExternalIndexCode(), thresholdMap, distributeList, workOrderList, CompareType.LESS_THAN_EQ,"");
            //检查不唯一数据量
            Integer nouniqueCountResult = result.getSnapUnique().getNouniqueCount();
            check(YwThreadConstants.Car_NouniqueCount, nouniqueCountResult, result, thresholdMap, distributeList, workOrderList, CompareType.MORE_THAN_EQ);
            check(YwThreadConstants.Car_NouniqueCount, nouniqueCountResult, result.getExternalIndexCode(), thresholdMap, distributeList, workOrderList, CompareType.MORE_THAN_EQ,"");
            //检查白天未识别量
            Integer dayNoNumberCountResult = result.getSnapPlate().getDayNoNumberCount();
            check(YwThreadConstants.Car_DayNoNumberCount, dayNoNumberCountResult, result, thresholdMap, distributeList, workOrderList, CompareType.MORE_THAN_EQ);
            check(YwThreadConstants.Car_DayNoNumberCount, dayNoNumberCountResult, result.getExternalIndexCode(), thresholdMap, distributeList, workOrderList, CompareType.MORE_THAN_EQ,"");
            //车辆六项属性不完整量
            Integer noIntegrityCountResult = result.getIntegrity().getNoIntegrityCount();
            check(YwThreadConstants.Car_NoIntegrityCount, noIntegrityCountResult, result, thresholdMap, distributeList, workOrderList, CompareType.MORE_THAN_EQ);
            check(YwThreadConstants.Car_NoIntegrityCount, noIntegrityCountResult, result.getExternalIndexCode(), thresholdMap, distributeList, workOrderList, CompareType.MORE_THAN_EQ,"");
        }
        //TODO:待处理集合添加工单
        /** 添加工单 */
        workOrderService.innerAdd(workOrderList);
        workOrderService.innerAdd(distributeList);
    }
    //封装阈值为map
@@ -202,7 +212,7 @@
    }
    //检查阈值
    private <T extends Comparable<T>> void check(String key, T value, Object result, Map<String, YwThreshold> thresholds, List distributeList, List workOrderList, CompareType compareType) {
    private <T extends Comparable<T>> void check(String key, T value, String serialNumber, Map<String, YwThreshold> thresholds, List distributeList, List workOrderList, CompareType compareType,String errorType) {
        Optional.ofNullable(value).ifPresentOrElse(
                v -> {
                    YwThreshold ywThreshold = thresholds.get(key);
@@ -212,13 +222,21 @@
                    //比较大小,加入到对应待处理集合
                    if (compareType.compare(v, thresholdAutoValue)) {
                        //自动下发工单
                        workOrderList.add(result);
                        WorkOrder workOrder = new WorkOrder();
                        workOrder.setSerialNumber(serialNumber);
                        workOrder.setStatus(WorkOrderStatusEnum.WAIT_DISTRIBUTE);
                        workOrder.setErrorType(errorType);
                        workOrderList.add(workOrder);
                    } else if (compareType.compare(v, thresholdValue)) {
                        //进入工单代下发
                        distributeList.add(result);
                        WorkOrder workOrder = new WorkOrder();
                        workOrder.setSerialNumber(serialNumber);
                        workOrder.setStatus(WorkOrderStatusEnum.DISTRIBUTED);
                        workOrder.setErrorType(errorType);
                        distributeList.add(workOrder);
                    }
                },
                () -> log.error("{} 为空: {}", thresholds.get(key).getName(), result)
                () -> log.error("{} 为空: {}", thresholds.get(key).getName(), serialNumber)
        );
    }
ycl-server/src/main/java/com/ycl/task/CarTask.java
@@ -97,6 +97,6 @@
    public void test() {
        Date yesterday = DateUtils.addDays(new Date(), -1);
        //TODO:一机一档 联网卡口设备目录一致率 取redis
        //TODO:一机一档 联网卡口设备目录一致率
    }
}
ycl-server/src/main/java/com/ycl/task/FaceTask.java
@@ -82,6 +82,6 @@
    public void test() {
        Date yesterday = DateUtils.addDays(new Date(), -1);
        //TODO:一机一档 联网卡口设备目录一致率 取redis
        //TODO:一机一档 联网卡口设备目录一致率
    }
}
ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
@@ -1,98 +1,146 @@
<?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">
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ycl.platform.mapper.TMonitorMapper">
    <resultMap type="com.ycl.platform.domain.entity.TMonitor" id="TMonitorResult">
        <result property="id"    column="id"    />
        <result property="serialNumber"    column="serial_number"    />
        <result property="name"    column="name"    />
        <result property="siteType"    column="site_type"    />
        <result property="macAddr"    column="mac_addr"    />
        <result property="ip"    column="ip"    />
        <result property="cameraFunType"    column="camera_fun_type"    />
        <result property="longitude"    column="longitude"    />
        <result property="latitude"    column="latitude"    />
        <result property="cameraCaptureArea"    column="camera_capture_area"    />
        <result property="onState"    column="on_state"    />
        <result property="civilCode"    column="civil_code"    />
        <result property="integratedDevice"    column="integrated_device"    />
        <result property="cameraBrand"    column="camera_brand"    />
        <result property="address"    column="address"    />
        <result property="netWorking"    column="net_working"    />
        <result property="publicSecurity"    column="public_security"    />
        <result property="installedTime"    column="installed_time"    />
        <result property="managementUnit"    column="management_unit"    />
        <result property="muContactInfo"    column="mu_contact_info"    />
        <result property="storageDays"    column="storage_days"    />
        <result property="monitorAzimuth"    column="monitor_azimuth"    />
        <result property="scenePhotoAddr"    column="scene_photo_addr"    />
        <result property="model"    column="model"    />
        <result property="siteVulgo"    column="site_vulgo"    />
        <result property="cameraType"    column="camera_type"    />
        <result property="cameraLightType"    column="camera_light_type"    />
        <result property="encodedFormat"    column="encoded_format"    />
        <result property="cameraDept"    column="camera_dept"    />
        <result property="hybm"    column="hybm"    />
        <result property="lxbm"    column="lxbm"    />
        <result property="reason"    column="reason"    />
        <result property="recovery"    column="recovery"    />
        <result property="recoveryTime"    column="recovery_time"    />
        <result property="deptId"    column="dept_id"    />
        <result property="id" column="id"/>
        <result property="serialNumber" column="serial_number"/>
        <result property="name" column="name"/>
        <result property="siteType" column="site_type"/>
        <result property="macAddr" column="mac_addr"/>
        <result property="ip" column="ip"/>
        <result property="cameraFunType" column="camera_fun_type"/>
        <result property="longitude" column="longitude"/>
        <result property="latitude" column="latitude"/>
        <result property="cameraCaptureArea" column="camera_capture_area"/>
        <result property="onState" column="on_state"/>
        <result property="civilCode" column="civil_code"/>
        <result property="integratedDevice" column="integrated_device"/>
        <result property="cameraBrand" column="camera_brand"/>
        <result property="address" column="address"/>
        <result property="netWorking" column="net_working"/>
        <result property="publicSecurity" column="public_security"/>
        <result property="installedTime" column="installed_time"/>
        <result property="managementUnit" column="management_unit"/>
        <result property="muContactInfo" column="mu_contact_info"/>
        <result property="storageDays" column="storage_days"/>
        <result property="monitorAzimuth" column="monitor_azimuth"/>
        <result property="scenePhotoAddr" column="scene_photo_addr"/>
        <result property="model" column="model"/>
        <result property="siteVulgo" column="site_vulgo"/>
        <result property="cameraType" column="camera_type"/>
        <result property="cameraLightType" column="camera_light_type"/>
        <result property="encodedFormat" column="encoded_format"/>
        <result property="cameraDept" column="camera_dept"/>
        <result property="hybm" column="hybm"/>
        <result property="lxbm" column="lxbm"/>
    </resultMap>
    <sql id="selectTMonitorVo">
        select id, serial_number, name, site_type, mac_addr, ip, camera_fun_type, longitude, latitude, camera_capture_area, on_state, civil_code, integrated_device, camera_brand, address, net_working, public_security, installed_time, management_unit, mu_contact_info, storage_days, monitor_azimuth, scene_photo_addr, model, site_vulgo, camera_type, camera_light_type, encoded_format, camera_dept, hybm, lxbm from t_monitor
        select id,
               serial_number,
               name,
               site_type,
               mac_addr,
               ip,
               camera_fun_type,
               longitude,
               latitude,
               camera_capture_area,
               on_state,
               civil_code,
               integrated_device,
               camera_brand,
               address,
               net_working,
               public_security,
               installed_time,
               management_unit,
               mu_contact_info,
               storage_days,
               monitor_azimuth,
               scene_photo_addr,
               model,
               site_vulgo,
               camera_type,
               camera_light_type,
               encoded_format,
               camera_dept,
               hybm,
               lxbm
        from t_monitor
    </sql>
    <select id="selectListByIds" resultType="com.ycl.platform.domain.vo.TMonitorVO">
        select m.id, m.serial_number, name, site_type, mac_addr, ip, camera_fun_type, longitude, latitude,
        camera_capture_area, on_state, civil_code, integrated_device, camera_brand, address, net_working,
        public_security, installed_time, management_unit, mu_contact_info, storage_days
        , monitor_azimuth, scene_photo_addr, model, site_vulgo, camera_type, camera_light_type, encoded_format,
        camera_dept, hybm, lxbm,d.dept_id, d.dept_name from t_monitor m
        left join t_yw_point p on m.serial_number = p.serial_number
        left join sys_dept d on p.dept_id = d.dept_id
        where m.serial_number in
        <foreach collection="list" separator="," item="id" open="(" close=")">
            #{id}
        </foreach>
    </select>
    <select id="selectTMonitorList" resultType="com.ycl.platform.domain.vo.TMonitorVO">
        select m.id, m.serial_number, name, site_type, mac_addr, ip, camera_fun_type, longitude, latitude, camera_capture_area, on_state, civil_code, integrated_device, camera_brand, address, net_working, public_security, installed_time, management_unit, mu_contact_info, storage_days
        , monitor_azimuth, scene_photo_addr, model, site_vulgo, camera_type, camera_light_type, encoded_format, camera_dept, hybm, lxbm, d.dept_name from t_monitor m
        select m.id, m.serial_number, name, site_type, mac_addr, ip, camera_fun_type, longitude, latitude,
        camera_capture_area, on_state, civil_code, integrated_device, camera_brand, address, net_working,
        public_security, installed_time, management_unit, mu_contact_info, storage_days
        , monitor_azimuth, scene_photo_addr, model, site_vulgo, camera_type, camera_light_type, encoded_format,
        camera_dept, hybm, lxbm,d.dept_id, d.dept_name from t_monitor m
        left join t_yw_point p on m.serial_number = p.serial_number
        left join sys_dept d on p.dept_id = d.dept_id
        <where>
            <if test="serialNumber != null  and serialNumber != ''"> and m.serial_number = #{serialNumber}</if>
            <if test="name != null  and name != ''"> and name like concat('%', #{name}, '%')</if>
            <if test="siteType != null "> and site_type = #{siteType}</if>
            <if test="macAddr != null  and macAddr != ''"> and mac_addr = #{macAddr}</if>
            <if test="ip != null  and ip != ''"> and ip = #{ip}</if>
            <if test="cameraFunType != null  and cameraFunType != ''"> and camera_fun_type like concat('%', #{cameraFunType}, '%')</if>
            <if test="longitude != null  and longitude != ''"> and longitude = #{longitude}</if>
            <if test="latitude != null  and latitude != ''"> and latitude = #{latitude}</if>
            <if test="cameraCaptureArea != null  and cameraCaptureArea != ''"> and camera_capture_area = #{cameraCaptureArea}</if>
            <if test="onState != null "> and on_state = #{onState}</if>
            <if test="civilCode != null  and civilCode != ''"> and civil_code = #{civilCode}</if>
            <if test="integratedDevice != null "> and integrated_device = #{integratedDevice}</if>
            <if test="cameraBrand != null "> and camera_brand = #{cameraBrand}</if>
            <if test="address != null  and address != ''"> and address like concat('%',#{address},'%') </if>
            <if test="netWorking != null "> and net_working = #{netWorking}</if>
            <if test="publicSecurity != null  and publicSecurity != ''"> and public_security = #{publicSecurity}</if>
            <if test="installedTime != null "> and installed_time = #{installedTime}</if>
            <if test="managementUnit != null  and managementUnit != ''"> and management_unit = #{managementUnit}</if>
            <if test="muContactInfo != null  and muContactInfo != ''"> and mu_contact_info = #{muContactInfo}</if>
            <if test="storageDays != null "> and storage_days = #{storageDays}</if>
            <if test="monitorAzimuth != null "> and monitor_azimuth = #{monitorAzimuth}</if>
            <if test="scenePhotoAddr != null  and scenePhotoAddr != ''"> and scene_photo_addr = #{scenePhotoAddr}</if>
            <if test="model != null  and model != ''"> and model = #{model}</if>
            <if test="siteVulgo != null  and siteVulgo != ''"> and site_vulgo = #{siteVulgo}</if>
            <if test="cameraType != null "> and camera_type = #{cameraType}</if>
            <if test="cameraLightType != null "> and camera_light_type = #{cameraLightType}</if>
            <if test="encodedFormat != null "> and encoded_format = #{encodedFormat}</if>
            <if test="cameraDept != null  and cameraDept != ''"> and camera_dept = #{cameraDept}</if>
            <if test="hybm != null  and hybm != ''"> and hybm = #{hybm}</if>
            <if test="lxbm != null "> and lxbm = #{lxbm}</if>
            <if test="recovery != null "> and p.recovery = #{recovery}</if>
            <if test="serialNumber != null  and serialNumber != ''">and m.serial_number = #{serialNumber}</if>
            <if test="name != null  and name != ''">and name like concat('%', #{name}, '%')</if>
            <if test="siteType != null ">and site_type = #{siteType}</if>
            <if test="macAddr != null  and macAddr != ''">and mac_addr = #{macAddr}</if>
            <if test="ip != null  and ip != ''">and ip = #{ip}</if>
            <if test="cameraFunType != null  and cameraFunType != ''">and camera_fun_type like concat('%',
                #{cameraFunType}, '%')
            </if>
            <if test="longitude != null  and longitude != ''">and longitude = #{longitude}</if>
            <if test="latitude != null  and latitude != ''">and latitude = #{latitude}</if>
            <if test="cameraCaptureArea != null  and cameraCaptureArea != ''">and camera_capture_area =
                #{cameraCaptureArea}
            </if>
            <if test="onState != null ">and on_state = #{onState}</if>
            <if test="civilCode != null  and civilCode != ''">and civil_code = #{civilCode}</if>
            <if test="integratedDevice != null ">and integrated_device = #{integratedDevice}</if>
            <if test="cameraBrand != null ">and camera_brand = #{cameraBrand}</if>
            <if test="address != null  and address != ''">and address like concat('%',#{address},'%')</if>
            <if test="netWorking != null ">and net_working = #{netWorking}</if>
            <if test="publicSecurity != null  and publicSecurity != ''">and public_security = #{publicSecurity}</if>
            <if test="installedTime != null ">and installed_time = #{installedTime}</if>
            <if test="managementUnit != null  and managementUnit != ''">and management_unit = #{managementUnit}</if>
            <if test="muContactInfo != null  and muContactInfo != ''">and mu_contact_info = #{muContactInfo}</if>
            <if test="storageDays != null ">and storage_days = #{storageDays}</if>
            <if test="monitorAzimuth != null ">and monitor_azimuth = #{monitorAzimuth}</if>
            <if test="scenePhotoAddr != null  and scenePhotoAddr != ''">and scene_photo_addr = #{scenePhotoAddr}</if>
            <if test="model != null  and model != ''">and model = #{model}</if>
            <if test="siteVulgo != null  and siteVulgo != ''">and site_vulgo = #{siteVulgo}</if>
            <if test="cameraType != null ">and camera_type = #{cameraType}</if>
            <if test="cameraLightType != null ">and camera_light_type = #{cameraLightType}</if>
            <if test="encodedFormat != null ">and encoded_format = #{encodedFormat}</if>
            <if test="cameraDept != null  and cameraDept != ''">and camera_dept = #{cameraDept}</if>
            <if test="hybm != null  and hybm != ''">and hybm = #{hybm}</if>
            <if test="lxbm != null ">and lxbm = #{lxbm}</if>
            <if test="recovery != null ">and p.recovery = #{recovery}</if>
        </where>
        ${params.dataScope}
    </select>
    <select id="selectTMonitorById" parameterType="Long" resultMap="TMonitorResult">
    <select id="selectTMonitorById" parameterType="Long" resultType="com.ycl.platform.domain.vo.TMonitorVO">
        <include refid="selectTMonitorVo"/>
        where id = #{id}
    </select>
    <insert id="insertTMonitor" parameterType="com.ycl.platform.domain.entity.TMonitor" useGeneratedKeys="true" keyProperty="id">
    <insert id="insertTMonitor" parameterType="com.ycl.platform.domain.entity.TMonitor" useGeneratedKeys="true"
            keyProperty="id">
        insert into t_monitor
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="serialNumber != null and serialNumber != ''">serial_number,</if>
@@ -125,7 +173,7 @@
            <if test="cameraDept != null">camera_dept,</if>
            <if test="hybm != null">hybm,</if>
            <if test="lxbm != null">lxbm,</if>
         </trim>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="serialNumber != null and serialNumber != ''">#{serialNumber},</if>
            <if test="name != null and name != ''">#{name},</if>
@@ -157,7 +205,7 @@
            <if test="cameraDept != null">#{cameraDept},</if>
            <if test="hybm != null">#{hybm},</if>
            <if test="lxbm != null">#{lxbm},</if>
         </trim>
        </trim>
    </insert>
    <update id="updateTMonitor" parameterType="com.ycl.platform.domain.entity.TMonitor">
@@ -171,7 +219,9 @@
            <if test="cameraFunType != null and cameraFunType != ''">camera_fun_type = #{cameraFunType},</if>
            <if test="longitude != null and longitude != ''">longitude = #{longitude},</if>
            <if test="latitude != null and latitude != ''">latitude = #{latitude},</if>
            <if test="cameraCaptureArea != null and cameraCaptureArea != ''">camera_capture_area = #{cameraCaptureArea},</if>
            <if test="cameraCaptureArea != null and cameraCaptureArea != ''">camera_capture_area =
                #{cameraCaptureArea},
            </if>
            <if test="onState != null">on_state = #{onState},</if>
            <if test="civilCode != null and civilCode != ''">civil_code = #{civilCode},</if>
            <if test="integratedDevice != null">integrated_device = #{integratedDevice},</if>
@@ -198,7 +248,9 @@
    </update>
    <delete id="deleteTMonitorById" parameterType="Long">
        delete from t_monitor where id = #{id}
        delete
        from t_monitor
        where id = #{id}
    </delete>
    <delete id="deleteTMonitorByIds" parameterType="String">
@@ -209,13 +261,13 @@
    </delete>
    <select id="getVideoCount" resultType="java.util.Map">
        SELECT count(*)                                                          AS totalPosts,
               IFNULL(SUM(IF(on_state = 1, 1, 0)), 0)                            AS totalMembers,
               IFNULL(SUM(IF(on_state = 2, 1, 0)), 0)                            AS postsPercentage,
               IFNULL(ROUND(SUM(IF(on_state = 1, 1, 0)) / count(*) * 100, 2), 0) as viewsPercentage
        SELECT count(*) AS totalPosts,
        IFNULL(SUM(IF(on_state = 1, 1, 0)), 0) AS totalMembers,
        IFNULL(SUM(IF(on_state = 2, 1, 0)), 0) AS postsPercentage,
        IFNULL(ROUND(SUM(IF(on_state = 1, 1, 0)) / count(*) * 100, 2), 0) as viewsPercentage
        FROM t_monitor m
            left join t_yw_point p on m.serial_number = p.serial_number
            left join sys_dept d on p.dept_id = d.dept_id
        left join t_yw_point p on m.serial_number = p.serial_number
        left join sys_dept d on p.dept_id = d.dept_id
        <where>
            camera_fun_type like concat('%', #{cameraFunType}, '%')
        </where>
@@ -229,35 +281,66 @@
               IFNULL(SUM(IF(on_state = 2, 1, 0)), 0)                            AS postsPercentage,
               IFNULL(ROUND(SUM(IF(on_state = 1, 1, 0)) / count(*) * 100, 2), 0) as viewsPercentage
        FROM t_monitor t
        LEFT JOIN t_yw_point p ON t.serial_number = p.serial_number
        WHERE p.recovery = 1 OR TIMESTAMPDIFF(DAY, p.recovery_time, NOW()) <= #{time}
                 LEFT JOIN t_yw_point p ON t.serial_number = p.serial_number
        WHERE p.recovery = 1
           OR TIMESTAMPDIFF(DAY, p.recovery_time, NOW()) <= #{time}
        ]]>
    </select>
    <select id="selectRecoveryMonitor" resultType="com.ycl.platform.domain.vo.TMonitorVO">
        <![CDATA[
        SELECT t.id, p.serial_number, name, site_type, mac_addr, ip, camera_fun_type, longitude, latitude, camera_capture_area, on_state, civil_code, integrated_device, camera_brand, address, net_working, public_security, installed_time, management_unit, mu_contact_info, storage_days, monitor_azimuth, scene_photo_addr, model, site_vulgo, camera_type, camera_light_type, encoded_format, camera_dept, hybm, lxbm
        SELECT t.id,
               p.serial_number,
               name,
               site_type,
               mac_addr,
               ip,
               camera_fun_type,
               longitude,
               latitude,
               camera_capture_area,
               on_state,
               civil_code,
               integrated_device,
               camera_brand,
               address,
               net_working,
               public_security,
               installed_time,
               management_unit,
               mu_contact_info,
               storage_days,
               monitor_azimuth,
               scene_photo_addr,
               model,
               site_vulgo,
               camera_type,
               camera_light_type,
               encoded_format,
               camera_dept,
               hybm,
               lxbm
        FROM t_monitor t
        LEFT JOIN t_yw_point p ON t.serial_number = p.serial_number
                 LEFT JOIN t_yw_point p ON t.serial_number = p.serial_number
        WHERE TIMESTAMPDIFF(DAY, p.recovery_time, NOW()) <= #{time}
        ]]>
    </select>
    <select id="home" resultType="java.util.Map">
        SELECT
            u.unit_name AS name,
            CONCAT(MONTH(w.create_time), '月') AS months,
            COUNT(w.id) AS num1,
            COUNT(m.id) - COUNT(w.id) AS num2
        u.unit_name AS name,
        CONCAT(MONTH(w.create_time), '月') AS months,
        COUNT(w.id) AS num1,
        COUNT(m.id) - COUNT(w.id) AS num2
        FROM
            t_monitor m
                LEFT JOIN t_yw_point p ON m.serial_number = p.serial_number
                LEFT JOIN t_yw_unit u ON p.unit_id = u.id
                LEFT JOIN t_work_order w ON p.id = w.point_id
        t_monitor m
        LEFT JOIN t_yw_point p ON m.serial_number = p.serial_number
        LEFT JOIN t_yw_unit u ON p.unit_id = u.id
        LEFT JOIN t_work_order w ON p.id = w.point_id
        WHERE u.id = #{unitId} AND MONTH(w.create_time) IS NOT NULL
          <if test="dateRange != null and dateRange.size > 0">
        <if test="dateRange != null and dateRange.size > 0">
            AND DATE_FORMAT(w.create_time, '%Y-%m') BETWEEN #{dateRange[0]} AND #{dateRange[1]}
          </if>
        </if>
        GROUP BY months
        ORDER BY months
    </select>