ycl-pojo/src/main/java/com/ycl/platform/domain/result/UY/OsdCheckResult.java
@@ -26,7 +26,7 @@ private String deviceNo; /** * 摄像机品牌 * 摄像机品牌0/1/2 海康/大华/宇视 */ private Integer deviceBrand; ycl-server/src/main/java/com/ycl/PlatformApplication.java
@@ -8,6 +8,7 @@ import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.cloud.openfeign.FeignAutoConfiguration; import org.springframework.data.mongodb.config.EnableMongoAuditing; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.transaction.annotation.EnableTransactionManagement; @@ -18,6 +19,7 @@ @ImportAutoConfiguration({FeignAutoConfiguration.class}) @SpringBootApplication @EnableMongoAuditing @EnableAsync //@EnableScheduling public class PlatformApplication { public static void main(String[] args) { ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java
@@ -270,4 +270,5 @@ * @author */ void batchImportWhite(List<PointExport> dataList); } ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
@@ -54,7 +54,9 @@ import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.ApplicationContext; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; @@ -100,6 +102,8 @@ private final ReportMapper reportMapper; private final WorkOrderCheckImgMapper workOrderCheckImgMapper; private final WorkOrderWhiteMapper workOrderWhiteMapper; private final DeviceInfoMapper deviceInfoMapper; private final ApplicationContext applicationContext; @Value("${rtsp.server:http://127.0.0.1:7788}") private String rtspServer; @@ -459,6 +463,7 @@ @Override @Transactional(rollbackFor = Exception.class) public Result ywCondition(WorkOrderYWConditionForm form) { WorkOrder workOrder = baseMapper.selectById(form.getId()); if (Objects.isNull(workOrder)) { throw new ServiceException("工单不存在"); @@ -475,9 +480,37 @@ workOrderYwConditionRecord.setYwProofMaterials(form.getYwProofMaterials()); workOrderYwConditionRecord.setSysMsg(Boolean.FALSE); workOrderYwConditionRecordMapper.insert(workOrderYwConditionRecord); //异步获取图片 WorkOrderServiceImpl self = applicationContext.getBean(WorkOrderServiceImpl.class); self.getImage(workOrder); return Result.ok("操作成功"); } @Async("threadPoolTaskExecutor") public void getImage(WorkOrder workOrder) { List<DeviceInfo> gbDevices = new LambdaQueryChainWrapper<>(deviceInfoMapper) .orderByDesc(DeviceInfo::getUpdateTime) .last("limit 1") .list(); if (CollectionUtils.isEmpty(gbDevices)) { return; } // 国标设备的编码就是取视频流的设备编码,国标设备就一个。国标设备的每一个通道代表一个摄像头,也就是设备id是取流的通道id String frameImg = null; try { log.info("国标平台:{},设备编码:{},工单号:{}",gbDevices.get(0).getDeviceId(), workOrder.getSerialNumber(), workOrder.getWorkOrderNo()); frameImg = this.getFrameImgByDevice(gbDevices.get(0).getDeviceId(), workOrder.getSerialNumber(), workOrder.getWorkOrderNo()); } catch (Exception e) { e.printStackTrace(); } if (StringUtils.hasText(frameImg)) { WorkOrderCheckImg img = new WorkOrderCheckImg(); img.setWorkOrderNo(workOrder.getWorkOrderNo()); img.setImgUrl(frameImg); img.setCreateTime(new Date()); workOrderCheckImgMapper.insert(img); } } @Override public List<WorkOrderYwConditionRecordVO> selectYwConditionByYwId(String workOrderNo) { List<WorkOrderYwConditionRecordVO> ywConditionList = workOrderYwConditionRecordMapper.selectYwConditionByYwId(workOrderNo); @@ -791,6 +824,7 @@ @Override public synchronized String getFrameImgByDevice(String deviceId, String channelId, String workOrderNo) throws Exception { String url = String.format(this.rtspServer + "/api/play/start/img/%s/%s", deviceId, channelId); log.info("访问路径{}",url); String result = HttpUtils.sendGet(url); log.info("拿到取流图片响应结果:" + result); WVPResult wvpResult = JSON.parseObject(result, WVPResult.class); @@ -998,7 +1032,7 @@ query.setStart(query.getStart() + " 00:00:00"); } if (query.getEnd() == null) { query.setStart(format.format(DateUtils.getDayEnd(new Date()))); query.setEnd(format.format(DateUtils.getDayEnd(new Date()))); } else { query.setEnd(query.getEnd() + " 23:59:59"); } @@ -1083,4 +1117,6 @@ updateWhiteList.stream().forEach(white -> workOrderWhiteMapper.updateBySerialNumber(white)); insertWhiteList.stream().forEach(white -> workOrderWhiteMapper.insert(white)); } } ycl-server/src/main/java/com/ycl/task/WorkOrderImgTask.java
@@ -91,6 +91,7 @@ img.setCreateTime(new Date()); workOrderCheckImgMapper.insert(img); } } } } } } ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
@@ -105,6 +105,8 @@ wo.overtime, wo.deduct, u.unit_name, u.unit_contact, u.unit_contact_phone, p.yw_person_name, tm.name as source, GROUP_CONCAT(DISTINCT da.dict_label ORDER BY da.dict_label SEPARATOR ',') AS errorType, @@ -114,12 +116,11 @@ INNER JOIN t_monitor tm ON wo.serial_number = tm.serial_number INNER JOIN t_work_order_error_type et ON wo.work_order_no = et.work_order_no 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' <if test="query.errorTypeList != null and query.errorTypeList.size() > 0">AND da.dict_value in <foreach collection="query.errorTypeList" open="(" separator="," close=")" item="errorType">#{errorType}</foreach> </if> INNER JOIN sys_dict_data da ON da.dict_value = et.error_name AND da.dict_type = 'error_type' LEFT JOIN t_work_order_check_img ci ON ci.work_order_no = wo.work_order_no LEFT JOIN t_yw_people p ON wo.yw_people_id = p.id AND p.deleted = 0 WHERE wo.deleted = 0 wo.deleted = 0 and wo.status != 'WAIT_DISTRIBUTE' <if test="query.unitId != null"> AND wo.unit_id = #{query.unitId} </if> @@ -132,6 +133,15 @@ <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 ( SELECT 1 FROM t_work_order_error_type twoet WHERE twoet.work_order_no = wo.work_order_no AND twoet.error_name in <foreach collection="query.errorTypeList" open="(" separator="," close=")" item="errorType">#{errorType}</foreach> )) </if> GROUP BY wo.id, wo.status, wo.work_order_no, wo.serial_number,wo.create_time, wo.unit_id, wo.yw_people_id,tm.name, wo.yw_handle_time, wo.yw_result, wo.yw_check_result, wo.overtime, wo.deduct, u.unit_name,