fuliqi
2024-11-07 3403a2462434da327d89311b4b9a75ab7a9b5c0f
OSD宇视bug,工单删除、工单导出时间bug等等
18个文件已修改
166 ■■■■ 已修改文件
ycl-common/src/main/java/constant/PointHeaderConstant.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/YwPoint.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/form/YwPointForm.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/result/UY/OsdCheckResult.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/api/YS/YSApi.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderDistributeRecordMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/mapper/YwPointMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/YwPointServiceImpl.java 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/YwUnitServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/OsdTask.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/thread/OSDCheckThread.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/WorkOrderDistributeRecordMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/YwPointMapper.xml 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-common/src/main/java/constant/PointHeaderConstant.java
@@ -12,6 +12,7 @@
    public final static String Point_Name = "点位名称(可修改)";
    public final static String Serial_Number = "国标码(不可修改)";
    public final static String Area = "区县(不可修改)";
    public final static String Unit = "运维单位(不可修改)";
    public final static String IP = "点位IP(可修改)";
    public final static String Province_Tag = "是否省厅标签(可修改)";
    public final static String Impotrant_Command_Image = "是否重点指挥图像(可修改)";
@@ -19,6 +20,6 @@
    // 可以将这些已知的键放入一个集合中,方便检查
    public static final Set<String> KNOWN_KEYS = new HashSet<>(Arrays.asList(
            ID,Point_Name, IP, Serial_Number,Area, Province_Tag, Impotrant_Command_Image, Dept_Tag
            ID,Point_Name, IP, Serial_Number,Area, Unit,Province_Tag, Impotrant_Command_Image, Dept_Tag
    ));
}
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/YwPoint.java
@@ -35,7 +35,7 @@
    private Date startTime;
    @ApiModelProperty("点位结束时间")
    @TableField("end_time")
    @TableField(value = "end_time")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date endTime;
ycl-pojo/src/main/java/com/ycl/platform/domain/form/YwPointForm.java
@@ -32,7 +32,6 @@
    @ApiModelProperty("点位名称")
    private String pointName;
    @NotNull(message = "运维单位不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("运维单位")
    private Integer unitId;
@@ -71,6 +70,15 @@
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date recoveryTime;
    @ApiModelProperty("点位开始时间")
    @TableField("start_time")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date startTime;
    @ApiModelProperty("点位结束时间")
    @TableField("end_time")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date endTime;
    public static YwPoint getEntityByForm(@NonNull YwPointForm form, YwPoint entity) {
        if(entity == null) {
          entity = new YwPoint();
ycl-pojo/src/main/java/com/ycl/platform/domain/result/UY/OsdCheckResult.java
@@ -3,6 +3,7 @@
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ycl.platform.domain.result.BaseResult;
import constant.ApiConstants;
import enumeration.DeviceType;
import lombok.Data;
import org.springframework.data.mongodb.core.index.TextIndexed;
import org.springframework.data.mongodb.core.mapping.Document;
@@ -30,6 +31,10 @@
     */
    private Integer deviceBrand;
    /**
     *  摄像机品牌0/1/2 海康/大华/宇视
     */
    private String deviceBrandStr;
    /**
     * 设备类型
     */
@@ -165,5 +170,10 @@
        if(ApiConstants.OSD_Correct.equals(result.getOsdPartCorrect())) result.setOsdPartCorrectText("正确");
        else if(ApiConstants.OSD_Error.equals(result.getOsdPartCorrect())) result.setOsdPartCorrectText("错误");
        else { result.setOsdPartCorrectText("未知"); }
        if(DeviceType.DH.getType().equals(result.getDeviceBrand())) result.setDeviceBrandStr(DeviceType.DH.getDesc());
        else if(DeviceType.HK.getType().equals(result.getDeviceBrand())) result.setDeviceBrandStr(DeviceType.HK.getDesc());
        else if(DeviceType.YS.getType().equals(result.getDeviceBrand())) result.setDeviceBrandStr(DeviceType.YS.getDesc());
        else { result.setDeviceBrandStr("未知"); }
    }
}
ycl-server/src/main/java/com/ycl/api/YS/YSApi.java
@@ -92,7 +92,7 @@
            }
            stOSDInfo.read();
            //省份
            String name = new String(stOSDInfo.stNameOSD.szOSDText, StandardCharsets.UTF_8);
            String name = new String(stOSDInfo.stNameOSD.szOSDText, StandardCharsets.UTF_8).trim();
            osdResult.setOSD1(name);
//            log.info("name"+name);
            int num = 0;
ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderDistributeRecordMapper.java
@@ -16,4 +16,7 @@
public interface WorkOrderDistributeRecordMapper extends BaseMapper<WorkOrderDistributeRecord> {
    void insertBatch(List<WorkOrderDistributeRecord> list);
    void deleteByWorkOrder(String workOrderNo);
}
ycl-server/src/main/java/com/ycl/platform/mapper/YwPointMapper.java
@@ -67,7 +67,7 @@
     *
     * @param pointList
     */
    int updatePoint(List<YwPoint> pointList);
    int updatePoint(@Param("pointList") List<YwPoint> pointList,@Param("needUpdateUnit")Boolean needUpdateUnit);
    /**
     * 统计某点位对应的未完成工单数量,理论上最大值为1个工单
@@ -132,4 +132,5 @@
     */
    List<YwPointVO> selectToCount(Short examineCategory, Short examineTag);
    void myUpdateById(YwPoint entity);
}
ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java
@@ -1006,7 +1006,7 @@
    @Override
    public Result videoImportantPointLabelingAccuracy(DataCenterQuery params) {
        List<String> likeFileds = Arrays.asList("deviceNo", "osdName");
        List<Criteria> andCriteria = MongoUtil.getAndCriteria(params, "checkTime", likeFileds, 3);
        List<Criteria> andCriteria = MongoUtil.getAndCriteria(params, "checkTime", likeFileds, null);
        Query query = new Query();
        Criteria and = new Criteria();
        and.andOperator(andCriteria);
ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java
@@ -134,7 +134,7 @@
            for (TMonitorVO monitor : monitors) {
                if (!CollectionUtils.isEmpty(voList)) {
                    for (WorkOrderVO workOrderVO : voList) {
                        if (monitor.getWorkOrderNo().equals(workOrderVO.getWorkOrderNo())) {
                        if (monitor.getWorkOrderNo()!=null && monitor.getWorkOrderNo().equals(workOrderVO.getWorkOrderNo())) {
                            monitor.setUnitContact(workOrderVO.getUnitContact());
                            monitor.setUnitContactPhone(workOrderVO.getUnitContactPhone());
                            monitor.setYwPeopleName(workOrderVO.getYwPeopleName());
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
@@ -114,8 +114,14 @@
    private RedisCache redisCache;
    @Override
    @Transactional(rollbackFor = Exception.class)
    public synchronized Boolean innerAddWorkOrder(List<WorkOrder> workOrderList) {
        //避免坑(事务加锁会失效、方法内部调用事务会失效)
        WorkOrderServiceImpl self = applicationContext.getBean(WorkOrderServiceImpl.class);
        return self.batchAddWorkOrder(workOrderList);
    }
    @Transactional(rollbackFor = Exception.class)
    public Boolean batchAddWorkOrder(List<WorkOrder> workOrderList){
        int total = workOrderList.size();
        // 查询出白名单列表
        List<String> serialNumbers = workOrderWhiteMapper.selectList().stream().map(WorkOrderWhite::getSerialNumber).collect(Collectors.toList());
@@ -317,7 +323,6 @@
        log.info("传入工单总数: {},实际添加工单数:{}, 实际修改工单数:{}", total, waitAddList.size(), updateNum);
        return Boolean.TRUE;
    }
    /**
     * 添加
     *
@@ -563,6 +568,9 @@
     */
    @Override
    public Result removeById(String id) {
        WorkOrder workOrder = baseMapper.selectById(id);
        String workOrderNo = workOrder.getWorkOrderNo();
        workOrderDistributeRecordMapper.deleteByWorkOrder(workOrderNo);
        if (baseMapper.deleteById(id) > 0) {
            return Result.ok("删除成功");
        }
@@ -581,8 +589,8 @@
        if(query.getUnitId()==null) {
            query.setUnitId(SecurityUtils.getUnitId());
        }
        query.setStart(DateUtils.getDayStart(query.getStart()));
        query.setEnd(DateUtils.getDayEnd(query.getEnd()));
        if(query.getStart()!=null) query.setStart(DateUtils.getDayStart(query.getStart()));
        if(query.getEnd()!=null) query.setEnd(DateUtils.getDayEnd(query.getEnd()));
        baseMapper.page(page, query);
        if (!CollectionUtils.isEmpty(page.getRecords())) {
            page.getRecords().stream().forEach(item -> {
@@ -600,6 +608,8 @@
    @Override
    public Result distributePage(DistributeWorkOrderQuery query) {
        IPage<WorkOrderVO> page = PageUtil.getPage(query, WorkOrderVO.class);
        if(query.getStart()!=null) query.setStart(DateUtils.getDayStart(query.getStart()));
        if(query.getEnd()!=null) query.setEnd(DateUtils.getDayEnd(query.getEnd()));
        baseMapper.distributePage(page, query);
        return Result.ok().data(page).total(page.getTotal());
    }
@@ -1028,22 +1038,10 @@
    @Override
    public List<WorkOrderVO> export (WorkOrderExportQuery query){
        query.setUnitId(SecurityUtils.getUnitId());
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        if (query.getStart() == null) {
            query.setStart(format.format(DateUtils.getDayStart(new Date())));
        } else {
            query.setStart(query.getStart() + " 00:00:00");
        }
        if (query.getEnd() == null) {
            query.setEnd(format.format(DateUtils.getDayEnd(new Date())));
        } else {
            query.setEnd(query.getEnd() + " 23:59:59");
        }
        if (query.getStart() != null) query.setStart(query.getStart() + " 00:00:00");
        if (query.getEnd() != null) query.setEnd(query.getEnd() + " 23:59:59");
        List<WorkOrderVO> export = baseMapper.export(query);
        System.out.println(export);
        return export;
        return baseMapper.export(query);
    }
    /**
ycl-server/src/main/java/com/ycl/platform/service/impl/YwPointServiceImpl.java
@@ -136,9 +136,14 @@
        YwPoint entity = baseMapper.selectById(form.getId());
        Assert.notNull(entity, "记录不存在");
        BeanUtils.copyProperties(form, entity);
        if (form.getUnitId() != null) {
            entity.setUnitId(Long.valueOf(form.getUnitId()));
        }else {
            entity.setUnitId(null);
        }
        Date now = new Date();
        entity.setUpdateTime(now);
        baseMapper.updateById(entity);
        baseMapper.myUpdateById(entity);
        return Result.ok("修改成功");
    }
@@ -260,8 +265,9 @@
        headers.add(PointHeaderConstant.ID);
        headers.add(PointHeaderConstant.Point_Name);
        headers.add(PointHeaderConstant.Serial_Number);
        headers.add(PointHeaderConstant.Area);
        headers.add(PointHeaderConstant.IP);
        headers.add(PointHeaderConstant.Area);
        headers.add(PointHeaderConstant.Unit);
        headers.add(PointHeaderConstant.Province_Tag);
        headers.add(PointHeaderConstant.Impotrant_Command_Image);
        headers.add(PointHeaderConstant.Dept_Tag);
@@ -279,8 +285,9 @@
            list.add(export.getId());
            list.add(export.getPointName());
            list.add(export.getSerialNumber());
            list.add(export.getArea());
            list.add(export.getPointIP());
            list.add(export.getArea());
            list.add(export.getUnitName());
            list.add(export.getProvinceTagString());
            list.add(export.getImportantCommandImageTagString());
            list.add(export.getDeptTagString());
@@ -386,6 +393,8 @@
            if (needUpdateUnit) {
                if (Objects.nonNull(unitId)) {
                    point.setUnitId(Long.valueOf(unitId));
                } else {
                    point.setUnitId(null);
                }
                point.setStartTime(startTime);
                point.setEndTime(endTime);
@@ -399,7 +408,7 @@
            point.setSerialNumber(item.getSerialNumber());
            return point;
        }).collect(Collectors.toList());
        this.waitAllFinishAndGetResult(pointList);
        this.waitAllFinishAndGetResult(pointList, needUpdateUnit);
    }
    @Override
@@ -476,9 +485,9 @@
        return baseMapper.selectOne(new LambdaQueryWrapper<>(YwPoint.class).eq(YwPoint::getSerialNumber, serialNumber).eq(YwPoint::getDeleted, "0"));
    }
    public void waitAllFinishAndGetResult(List<YwPoint> dataList) {
    public void waitAllFinishAndGetResult(List<YwPoint> dataList, Boolean needUpdateUnit) {
        Date startTime = new Date();
        this.baseMapper.updatePoint(dataList);
        this.baseMapper.updatePoint(dataList, needUpdateUnit);
        Date endTime = new Date();
        log.error("总共耗时:" + (endTime.getTime() - startTime.getTime()));
    }
ycl-server/src/main/java/com/ycl/platform/service/impl/YwUnitServiceImpl.java
@@ -216,8 +216,12 @@
    @Override
    public Result workList(DistributeWorkOrderQuery query) {
        if(query.getStart()!=null) {
        query.setStart(DateUtils.getDayStart(query.getStart()));
        }
        if(query.getEnd()!=null) {
        query.setEnd(DateUtils.getDayEnd(query.getEnd()));
        }
        List<YwUnit> ywUnits = baseMapper.selectList(null);
        List<YwUnitVO> lists = ywUnits.stream().map(item -> {
            YwUnitVO vo = new YwUnitVO();
ycl-server/src/main/java/com/ycl/task/OsdTask.java
@@ -104,7 +104,6 @@
                    //封装OsdCheckResult
                    OsdCheckResult osdCheckResult = getOsdCheckResult(osdResult, monitor);
                    checkCorrect(osdResult, monitor, osdCheckResult);
                    log.info("校验结果:{}", osdCheckResult);
                    checkResults.add(osdCheckResult);
                }
            }
ycl-server/src/main/java/com/ycl/thread/OSDCheckThread.java
@@ -93,7 +93,6 @@
            OSDResult osd = HKApi.getOsdByIP(monitor.getIp(), HKUserName, HKPassword);
            OSDResult osdResult = checkSuccess(monitor, osd);
            if (osdResult!=null) {
                log.info("海康调用成功" + osd);
                return osd;
            }else {
                return null;
@@ -103,7 +102,6 @@
            OSDResult osd = DHApi.getOsd(monitor.getIp(), DHUserName, DHPassword);
            OSDResult osdResult = checkSuccess(monitor, osd);
            if (osdResult!=null) {
                log.info("大华调用成功" + osd);
                return osd;
            }else {
                return null;
@@ -113,7 +111,6 @@
            OSDResult osd = YSApi.getOsd(monitor.getIp(), YSUserName, YSPassword);
            OSDResult osdResult = checkSuccess(monitor, osd);
            if (osdResult!=null) {
                log.info("宇视调用成功" + osd);
                return osd;
            }else {
                return null;
@@ -129,21 +126,18 @@
        OSDResult hkosd = HKApi.getOsdByIP(monitor.getIp(), HKUserName, HKPassword);
        if (hkosd != null) {
            hkosd.setSerialNumber(monitor.getSerialNumber());
            log.info("海康调用成功" + hkosd);
            return hkosd;
        }
        //尝试大华的api
        OSDResult dhosd = DHApi.getOsd(monitor.getIp(), DHUserName, DHPassword);
        if (dhosd != null) {
            dhosd.setSerialNumber(monitor.getSerialNumber());
            log.info("大华调用成功" + dhosd);
            return dhosd;
        }
        //宇视api
        OSDResult ysosd = YSApi.getOsd(monitor.getIp(), YSUserName, YSPassword);
        if (ysosd != null) {
            ysosd.setSerialNumber(monitor.getSerialNumber());
            log.info("宇视调用成功" + ysosd);
            return ysosd;
        }
        return null;
ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
@@ -128,7 +128,7 @@
        left join (
        WITH cte AS (
        SELECT *,row_number() OVER(PARTITION BY serial_number ORDER BY create_time DESC) rn FROM t_work_order
        WHERE deleted = 0 AND status != 'AUDITING_SUCCESS'
        WHERE deleted = 0 AND status == 'AUDITING_SUCCESS'
        ) SELECT * FROM cte WHERE rn=1
        ) w on m.serial_number = w.serial_number and w.deleted = 0
        left join t_yw_unit u on p.unit_id = u.id and u.deleted = 0
ycl-server/src/main/resources/mapper/zgyw/WorkOrderDistributeRecordMapper.xml
@@ -10,4 +10,8 @@
            (#{item.workOrderNo}, #{item.userId}, now(), '0', #{item.distributeWay})
        </foreach>
    </insert>
    <delete id="deleteByWorkOrder">
        delete from t_work_order_distribute_record where work_order_no = #{workOrderNo}
    </delete>
</mapper>
ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
@@ -189,7 +189,10 @@
        </if>
        <if test="query.keyword != null and query.keyword != ''">
            AND (tm.name like concat('%', #{query.keyword}, '%') or tm.serial_number like concat('%', #{query.keyword},
            '%'))
            '%') or wo.work_order_no like concat('%', #{query.keyword}, '%'))
        </if>
        <if test="query.start != null and query.end != null">
            AND wo.create_time BETWEEN #{query.start} AND #{query.end}
        </if>
        <if test="query.errorTypeList != null and query.errorTypeList.size() > 0">
            AND (EXISTS (
@@ -417,8 +420,15 @@
        INNER JOIN t_yw_unit u ON wo.unit_id = u.id AND u.deleted = 0
        INNER JOIN sys_dict_data da ON da.dict_value = et.error_name AND da.dict_type = 'error_type'
        LEFT JOIN t_yw_people p ON wo.yw_people_id = p.id AND p.deleted = 0
        WHERE
        wo.deleted = 0
        where
        wo.deleted = 0 and wo.status != 'WAIT_DISTRIBUTED'
<!--        <if test="orders !=null and orders.size >0 ">-->
<!--            wo.work_order_no in-->
<!--            <foreach collection="orders" item="workOrderNo" separator="," open="(" close=")">-->
<!--                 #{workOrderNo}-->
<!--            </foreach>-->
<!--        </if>-->
<!--        </where>-->
        GROUP BY
        wo.work_order_no,
        u.unit_name,
@@ -426,4 +436,6 @@
        u.unit_contact_phone,
        p.yw_person_name
    </select>
</mapper>
ycl-server/src/main/resources/mapper/zgyw/YwPointMapper.xml
@@ -260,13 +260,9 @@
            <if test="point.pointName != null and point.pointName != ''">
                point_name = #{point.pointName},
            </if>
            <if test="point.unitId != null">
            <if test="needUpdateUnit != null and needUpdateUnit">
                unit_id = #{point.unitId},
            </if>
            <if test="point.startTime != null">
                start_time = #{point.startTime},
            </if>
            <if test="point.endTime != null">
                end_time = #{point.endTime},
            </if>
            province_tag = #{point.provinceTag},
@@ -374,4 +370,35 @@
            </if>
        </where>
    </select>
    <update id="myUpdateById">
        update t_yw_point
        <set>
            <if test="pointName !=null and pointName !=''">
                point_name = #{pointName},
            </if>
            <if test="updateTime !=null">
                update_time = #{updateTime},
            </if>
            <if test="deptId !=null">
                dept_id = #{deptId},
            </if>
            <if test="provinceTag !=null">
                province_tag = #{provinceTag},
            </if>
            <if test="importantTag !=null">
                important_tag = #{importantTag},
            </if>
            <if test="importantCommandImageTag !=null">
                important_command_image_tag = #{importantCommandImageTag},
            </if>
            <if test="deptTag !=null">
                dept_tag = #{deptTag},
            </if>
            unit_id = #{unitId},
            start_time = #{startTime},
            end_time = #{endTime},
            remark = #{remark},
        </set>
        where id =#{id}
    </update>
</mapper>