OSD宇视bug,工单删除、工单导出时间bug等等
| | |
| | | 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 = "是否重点指挥图像(可修改)"; |
| | |
| | | |
| | | // 可以将这些已知的键放入一个集合中,方便检查 |
| | | 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 |
| | | )); |
| | | } |
| | |
| | | private Date startTime; |
| | | |
| | | @ApiModelProperty("点位结束时间") |
| | | @TableField("end_time") |
| | | @TableField(value = "end_time") |
| | | @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
| | | private Date endTime; |
| | | |
| | |
| | | @ApiModelProperty("点位名称") |
| | | private String pointName; |
| | | |
| | | @NotNull(message = "运维单位不能为空", groups = {Add.class, Update.class}) |
| | | @ApiModelProperty("运维单位") |
| | | private Integer unitId; |
| | | |
| | |
| | | @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(); |
| | |
| | | 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; |
| | |
| | | */ |
| | | private Integer deviceBrand; |
| | | |
| | | /** |
| | | * 摄像机品牌0/1/2 海康/大华/宇视 |
| | | */ |
| | | private String deviceBrandStr; |
| | | /** |
| | | * 设备类型 |
| | | */ |
| | |
| | | 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("未知"); } |
| | | } |
| | | } |
| | |
| | | } |
| | | 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; |
| | |
| | | public interface WorkOrderDistributeRecordMapper extends BaseMapper<WorkOrderDistributeRecord> { |
| | | |
| | | void insertBatch(List<WorkOrderDistributeRecord> list); |
| | | |
| | | void deleteByWorkOrder(String workOrderNo); |
| | | |
| | | } |
| | |
| | | * |
| | | * @param pointList |
| | | */ |
| | | int updatePoint(List<YwPoint> pointList); |
| | | int updatePoint(@Param("pointList") List<YwPoint> pointList,@Param("needUpdateUnit")Boolean needUpdateUnit); |
| | | |
| | | /** |
| | | * 统计某点位对应的未完成工单数量,理论上最大值为1个工单 |
| | |
| | | */ |
| | | List<YwPointVO> selectToCount(Short examineCategory, Short examineTag); |
| | | |
| | | void myUpdateById(YwPoint entity); |
| | | } |
| | |
| | | @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); |
| | |
| | | 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()); |
| | |
| | | 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()); |
| | |
| | | log.info("传入工单总数: {},实际添加工单数:{}, 实际修改工单数:{}", total, waitAddList.size(), updateNum); |
| | | return Boolean.TRUE; |
| | | } |
| | | |
| | | /** |
| | | * 添加 |
| | | * |
| | |
| | | */ |
| | | @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("删除成功"); |
| | | } |
| | |
| | | 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 -> { |
| | |
| | | @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()); |
| | | } |
| | |
| | | @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); |
| | | } |
| | | |
| | | /** |
| | |
| | | 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("修改成功"); |
| | | } |
| | | |
| | |
| | | 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); |
| | |
| | | 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()); |
| | |
| | | if (needUpdateUnit) { |
| | | if (Objects.nonNull(unitId)) { |
| | | point.setUnitId(Long.valueOf(unitId)); |
| | | } else { |
| | | point.setUnitId(null); |
| | | } |
| | | point.setStartTime(startTime); |
| | | point.setEndTime(endTime); |
| | |
| | | point.setSerialNumber(item.getSerialNumber()); |
| | | return point; |
| | | }).collect(Collectors.toList()); |
| | | this.waitAllFinishAndGetResult(pointList); |
| | | this.waitAllFinishAndGetResult(pointList, needUpdateUnit); |
| | | } |
| | | |
| | | @Override |
| | |
| | | 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())); |
| | | } |
| | |
| | | |
| | | @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(); |
| | |
| | | //封装OsdCheckResult |
| | | OsdCheckResult osdCheckResult = getOsdCheckResult(osdResult, monitor); |
| | | checkCorrect(osdResult, monitor, osdCheckResult); |
| | | log.info("校验结果:{}", osdCheckResult); |
| | | checkResults.add(osdCheckResult); |
| | | } |
| | | } |
| | |
| | | OSDResult osd = HKApi.getOsdByIP(monitor.getIp(), HKUserName, HKPassword); |
| | | OSDResult osdResult = checkSuccess(monitor, osd); |
| | | if (osdResult!=null) { |
| | | log.info("海康调用成功" + osd); |
| | | return osd; |
| | | }else { |
| | | return null; |
| | |
| | | OSDResult osd = DHApi.getOsd(monitor.getIp(), DHUserName, DHPassword); |
| | | OSDResult osdResult = checkSuccess(monitor, osd); |
| | | if (osdResult!=null) { |
| | | log.info("大华调用成功" + osd); |
| | | return osd; |
| | | }else { |
| | | return null; |
| | |
| | | OSDResult osd = YSApi.getOsd(monitor.getIp(), YSUserName, YSPassword); |
| | | OSDResult osdResult = checkSuccess(monitor, osd); |
| | | if (osdResult!=null) { |
| | | log.info("宇视调用成功" + osd); |
| | | return osd; |
| | | }else { |
| | | return null; |
| | |
| | | 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; |
| | |
| | | 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 |
| | |
| | | (#{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> |
| | |
| | | </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 ( |
| | |
| | | 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, |
| | |
| | | u.unit_contact_phone, |
| | | p.yw_person_name |
| | | </select> |
| | | |
| | | |
| | | </mapper> |
| | |
| | | <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}, |
| | |
| | | </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> |