Преглед на файлове

Merge branch 'master' of http://10.1.235.20:3000/asiainfo/ebc

wangchao преди 4 години
родител
ревизия
d814fe945a
променени са 1 файла, в които са добавени 28 реда и са изтрити 34 реда
  1. 28 34
      monitor-manage-service/src/main/java/com/ai/bss/monitorManage/service/impl/KafkaProcessImpl.java

+ 28 - 34
monitor-manage-service/src/main/java/com/ai/bss/monitorManage/service/impl/KafkaProcessImpl.java

36
36
37
import lombok.extern.slf4j.Slf4j;
37
import lombok.extern.slf4j.Slf4j;
38
38
39
import javax.sound.sampled.Line;
40
39
@Slf4j
41
@Slf4j
40
@Service
42
@Service
41
public class KafkaProcessImpl implements KafkaProcess {
43
public class KafkaProcessImpl implements KafkaProcess {
129
		}
131
		}
130
		// 文件上传到 minio文件服务器
132
		// 文件上传到 minio文件服务器
131
		multipartFile = new CommonsMultipartFile(FileUtils.createFileItem(new File(filePath), fileName));
133
		multipartFile = new CommonsMultipartFile(FileUtils.createFileItem(new File(filePath), fileName));
132
133
		log.info("保存图片文件:"+fileName);
134
		log.info("保存图片文件:"+fileName);
134
		minioFileMap = fileManageService.uploadFile(multipartFile, bucketName, deviceCode, null);
135
		minioFileMap = fileManageService.uploadFile(multipartFile, bucketName, deviceCode, null);
135
136
291
	 */
292
	 */
292
	private AiIdenLogDto aiHelmetDetect(AiIdenLogDto aiIdenLogDto, String aifilePath) {
293
	private AiIdenLogDto aiHelmetDetect(AiIdenLogDto aiIdenLogDto, String aifilePath) {
293
		try {
294
		try {
294
			log.info("开始AI处理...");
295
			log.info("开始AI帽子识别处理...");
295
			// 安全帽识别
296
			// 安全帽识别
296
			String aiResponseData = ebcAiService.helmetDetect(ImageBase64Converter.convertFileToBase64(aifilePath),
297
			String aiResponseData = ebcAiService.helmetDetect(ImageBase64Converter.convertFileToBase64(aifilePath),
297
					Strings.EMPTY, Strings.EMPTY);
298
					Strings.EMPTY, Strings.EMPTY);
298
//			String aiResponseData = ebcAiService.helmetDetect(ImageBase64Converter.convertInputStreamToBase64(multipartFile.getInputStream()), Strings.EMPTY, Strings.EMPTY);
299
//			String aiResponseData = ebcAiService.helmetDetect(ImageBase64Converter.convertInputStreamToBase64(multipartFile.getInputStream()), Strings.EMPTY, Strings.EMPTY);
299
			JSONObject jsonObject = JSONObject.parseObject(aiResponseData);// JSONUtil.formatJsonStr(aiResponseData);
300
			JSONObject jsonObject = JSONObject.parseObject(aiResponseData);// JSONUtil.formatJsonStr(aiResponseData);
300
			System.out.println("AI 识别结果: " + jsonObject);
301
			System.out.println("AI帽子识别结果: " + jsonObject);
301
			IdenResultDto idenResultDto = null;
302
			IdenResultDto idenResultDto = null;
302
			List<IdenResultDto> idenResultDtoList = null;
303
			List<IdenResultDto> idenResultDtoList = null;
303
			if (jsonObject.getString("Status").equals("Ok")) {
304
			if (jsonObject.getString("Status").equals("Ok")) {
342
			// AI模型
343
			// AI模型
343
//			aiIdenLogDto.setAiIdenModel(MonitorManageConsts.AI_MODEL_CLOTHING_CODE);
344
//			aiIdenLogDto.setAiIdenModel(MonitorManageConsts.AI_MODEL_CLOTHING_CODE);
344
		} catch (Exception e) {
345
		} catch (Exception e) {
345
			log.error("AI处理异常");
346
			log.error("AI处理异常,帽子识别");
346
		}
347
		}
347
		return aiIdenLogDto;
348
		return aiIdenLogDto;
348
	}
349
	}
375
			log.info("开始AI人数识别处理...");
376
			log.info("开始AI人数识别处理...");
376
			String aiResponseData = ebcAiService.headDetect(ImageBase64Converter.convertFileToBase64(aifilePath), true,
377
			String aiResponseData = ebcAiService.headDetect(ImageBase64Converter.convertFileToBase64(aifilePath), true,
377
					0.9f);
378
					0.9f);
378
379
			JSONObject jsonObject = JSONObject.parseObject(aiResponseData);
379
			JSONObject jsonObject = JSONObject.parseObject(aiResponseData);
380
			JSONArray jsonArray = jsonObject.getJSONArray("Result");
380
			JSONArray jsonArray = jsonObject.getJSONArray("Result");
381
			if (!CollectionUtils.isEmpty(jsonArray)) {
381
			if (!CollectionUtils.isEmpty(jsonArray)) {
384
			} else {
384
			} else {
385
				log.info("AI人数识别结果:没有人");
385
				log.info("AI人数识别结果:没有人");
386
			}
386
			}
387
388
		} catch (Exception e) {
387
		} catch (Exception e) {
389
			log.error("AI处理异常");
388
			log.error("AI处理异常,人数识别");
390
		}
389
		}
391
		return isHuman;
390
		return isHuman;
392
	}
391
	}
412
				if (resultJsonObject.getIntValue("is_match") == 0) {
411
				if (resultJsonObject.getIntValue("is_match") == 0) {
413
					aiIdenLogDto.setIdenResult(jsonObject.getString("result"));
412
					aiIdenLogDto.setIdenResult(jsonObject.getString("result"));
414
					aiIdenLogDto.setIdenResultType(MonitorManageConsts.AI_IDENTIFY_RESULT);
413
					aiIdenLogDto.setIdenResultType(MonitorManageConsts.AI_IDENTIFY_RESULT);
415
416
				} else {
414
				} else {
417
					aiIdenLogDto.setIdenResult(jsonObject.getString("result"));
415
					aiIdenLogDto.setIdenResult(jsonObject.getString("result"));
418
					aiIdenLogDto.setRelateEmployeeRoleId(resultJsonObject.getString("user_id"));
416
					aiIdenLogDto.setRelateEmployeeRoleId(resultJsonObject.getString("user_id"));
419
					aiIdenLogDto.setIdenResultType(MonitorManageConsts.AI_IDENTIFY_RESULT_ATTENDANCE);
417
					aiIdenLogDto.setIdenResultType(MonitorManageConsts.AI_IDENTIFY_RESULT_ATTENDANCE);
420
421
				}
418
				}
422
419
423
				log.info("识别成功,推送KAFKA消息");
420
				log.info("识别成功,推送KAFKA消息");
427
				return aiIdenLogDto;
424
				return aiIdenLogDto;
428
			}
425
			}
429
		} catch (Exception e) {
426
		} catch (Exception e) {
430
			log.error("AI处理异常");
427
			log.error("AI处理异常,人脸识别");
431
		}
428
		}
432
		return aiIdenLogDto;
429
		return aiIdenLogDto;
433
	}
430
	}
468
                                    aiIdenLogDto.setIdenResultType(MonitorManageConsts.AI_IDENTIFY_RESULT);
465
                                    aiIdenLogDto.setIdenResultType(MonitorManageConsts.AI_IDENTIFY_RESULT);
469
                                }
466
                                }
470
                        }
467
                        }
471
                        log.info("识别成功,推送KAFKA消息");
468
						log.info("吸烟识别成功,推送KAFKA消息");
472
                        processKafka(aiIdenLogDto.getTopic(), JSONObject.toJSONString(aiIdenLogDto));
469
                        processKafka(aiIdenLogDto.getTopic(), JSONObject.toJSONString(aiIdenLogDto));
470
                    	log.info("消息推送完成");
473
                    }else{
471
                    }else{
474
                        log.info("没有识别到吸烟者,不推送KAFKA消息");
472
                        log.info("没有识别到吸烟者,不推送KAFKA消息");
475
                    }
473
                    }
476
            }else{
474
            }else{
477
            	log.error("识别异常返回");
475
            	log.error("吸烟识别识别异常");
478
			}
476
			}
479
        }catch(Exception e){
477
        }catch(Exception e){
480
        log.error("AI处理异常");
478
        log.error("AI处理异常,吸烟识别");
481
        }
479
        }
482
        return aiIdenLogDto;
480
        return aiIdenLogDto;
483
    }
481
    }
491
		//工作服识别
489
		//工作服识别
492
		String aiResponseData=ebcAiService.workClothesDetect(ImageBase64Converter.convertFileToBase64(aifilePath),true,true,0.9f);
490
		String aiResponseData=ebcAiService.workClothesDetect(ImageBase64Converter.convertFileToBase64(aifilePath),true,true,0.9f);
493
		JSONObject jsonObject = JSONObject.parseObject(aiResponseData);
491
		JSONObject jsonObject = JSONObject.parseObject(aiResponseData);
494
		System.out.print("AI识别结果:"+aiResponseData);
492
		System.out.print("AI工作服识别结果:"+aiResponseData);
495
		IdenResultDto idenResultDto = null;
493
		IdenResultDto idenResultDto = null;
496
		List<IdenResultDto> idenResultDtoList = null;
494
		List<IdenResultDto> idenResultDtoList = null;
497
		if(jsonObject.getString("Status").equals("Ok")){
495
		if(jsonObject.getString("Status").equals("Ok")){
498
			idenResultDtoList = new ArrayList<>();
496
			idenResultDtoList = new ArrayList<>();
499
			JSONArray jsonArray = JSONArray.parseArray(jsonObject.getString("Result"));
500
			if(jsonArray.size()>0){
501
				for (int i = 0; i < jsonArray.size(); i++) {
502
					JSONObject resultObj = JSONObject.parseObject(jsonArray.get(i).toString());
503
					JSONObject jsonArray1 = JSONObject.parseObject(resultObj.getString("clothes"));
504
					String aiClassName =jsonArray1.getString("class");
497
			List<Map> resultList = JSONArray.parseArray(jsonObject.getString("Result"),Map.class);
498
			if(resultList.size()>0){
499
				for (int i = 0; i < resultList.size(); i++) {
500
					JSONObject resultObject = JSONObject.parseObject(resultList.get(i).get("clothes").toString());
501
					String aiClassName =resultObject.getString("class");
505
					if(aiClassName.equals("qita")){
502
					if(aiClassName.equals("qita")){
506
						idenResultDto = new IdenResultDto();
503
						idenResultDto = new IdenResultDto();
507
						idenResultDto.setAlarmEmployeeRoleId(MonitorManageConsts.alarmEmployeeRoleId);
504
						idenResultDto.setAlarmEmployeeRoleId(MonitorManageConsts.alarmEmployeeRoleId);
524
						log.info("识别到工作服,工作服类型为:"+aiClassName);
521
						log.info("识别到工作服,工作服类型为:"+aiClassName);
525
					}
522
					}
526
				}
523
				}
527
				log.info("识别成功,推送KAFKA消息");
524
				log.info("工作服识别成功,推送KAFKA消息");
528
				processKafka(aiIdenLogDto.getTopic(), JSONObject.toJSONString(aiIdenLogDto));
525
				processKafka(aiIdenLogDto.getTopic(), JSONObject.toJSONString(aiIdenLogDto));
526
				log.info("消息推送完成");
529
			}else {
527
			}else {
530
				log.info("没有识别到人,不推送KAFKA消息");
528
				log.info("没有识别到人,不推送KAFKA消息");
531
			}
529
			}
532
		}else if(jsonObject.getString("Status").equals("ERROR")){
530
		}else if(jsonObject.getString("Status").equals("ERROR")){
533
			log.error("异常信息为:"+jsonObject.getString("Des"));
531
			log.error("工作服识别异常:"+jsonObject.getString("Des"));
534
		}
532
		}
535
533
536
	}catch(Exception e){
534
	}catch(Exception e){
537
	log.error("AI处理异常");
535
	log.error("AI处理异常,工作服识别");
538
	}
536
	}
539
	return aiIdenLogDto;
537
	return aiIdenLogDto;
540
}
538
}
548
		//仪表识别
546
		//仪表识别
549
		String aiResponseData=ebcAiService.instrumentDetect(ImageBase64Converter.convertFileToBase64(aifilePath),Strings.EMPTY,Strings.EMPTY,Strings.EMPTY);
547
		String aiResponseData=ebcAiService.instrumentDetect(ImageBase64Converter.convertFileToBase64(aifilePath),Strings.EMPTY,Strings.EMPTY,Strings.EMPTY);
550
		JSONObject jsonObject = JSONObject.parseObject(aiResponseData);
548
		JSONObject jsonObject = JSONObject.parseObject(aiResponseData);
551
		System.out.print("AI识别结果:"+aiResponseData);
552
		JSONObject jsonObjectpredictions=JSONObject.parseObject(jsonObject.getString("predictions"));
549
		System.out.print("AI仪表识别结果:"+aiResponseData);
550
		JSONObject jsonObjectpredictions=jsonObject.getJSONObject("predictions");
553
		if(jsonObjectpredictions.getString("Errors").isEmpty()){
551
		if(jsonObjectpredictions.getString("Errors").isEmpty()){
554
			if(jsonObjectpredictions.getInteger("Nums")>0){
552
			if(jsonObjectpredictions.getInteger("Nums")>0){
555
				log.info("识别到的仪表的数量为:"+jsonObjectpredictions.getInteger("Nums"));
553
				log.info("识别到的仪表的数量为:"+jsonObjectpredictions.getInteger("Nums"));
556
				aiIdenLogDto.setIdenResultType(MonitorManageConsts.AI_IDENTIFY_RESULT);
554
				aiIdenLogDto.setIdenResultType(MonitorManageConsts.AI_IDENTIFY_RESULT);
557
				aiIdenLogDto.setRelateEmployeeRoleId(MonitorManageConsts.alarmEmployeeRoleId);
555
				aiIdenLogDto.setRelateEmployeeRoleId(MonitorManageConsts.alarmEmployeeRoleId);
558
				log.info("返回的仪表信息为:"+JSON.toJSONString(jsonObject));
559
				aiIdenLogDto.setIdenResult(JSON.toJSONString(jsonObject));
560
				log.info("识别成功,推送KAFKA消息");
556
				log.info("返回的仪表信息为:"+jsonObjectpredictions.getString("Items"));
557
				aiIdenLogDto.setIdenResult(jsonObjectpredictions.getString("Items"));
558
				log.info("仪表识别成功,推送KAFKA消息");
561
				processKafka(aiIdenLogDto.getTopic(), JSONObject.toJSONString(aiIdenLogDto));
559
				processKafka(aiIdenLogDto.getTopic(), JSONObject.toJSONString(aiIdenLogDto));
560
				log.info("消息推送完成");
562
			}else{
561
			}else{
563
				log.info("仪表数量为0,不推送消息");
562
				log.info("仪表数量为0,不推送消息");
564
			}
563
			}
566
			log.info("异常返回,异常原因为:"+jsonObjectpredictions.getString("Errors"));
565
			log.info("异常返回,异常原因为:"+jsonObjectpredictions.getString("Errors"));
567
		}
566
		}
568
	}catch(Exception e){
567
	}catch(Exception e){
569
		log.error("AI处理异常");
568
		log.error("AI处理异常,仪表识别");
570
	}
569
	}
571
	return aiIdenLogDto;
570
	return aiIdenLogDto;
572
}
571
}
573
574
575
576
	/**
572
	/**
577
	 * 根据设备code获取监控任务详情
573
	 * 根据设备code获取监控任务详情
578
	 * @param deviceCode
574
	 * @param deviceCode
580
	 */
576
	 */
581
	private List<Map> getResourceToolAllInfo(String deviceCode) {
577
	private List<Map> getResourceToolAllInfo(String deviceCode) {
582
		List<Map> resourceToolInfoList = new ArrayList<Map>();
578
		List<Map> resourceToolInfoList = new ArrayList<Map>();
583
584
		try {
579
		try {
585
			String url = protectionResourceUrl + "?resourceToolCode=" + deviceCode;
580
			String url = protectionResourceUrl + "?resourceToolCode=" + deviceCode;
586
			log.info("getResourceToolAllInfo method params: resourceToolCode=" + deviceCode + ", url=" + url);
581
			log.info("getResourceToolAllInfo method params: resourceToolCode=" + deviceCode + ", url=" + url);
587
588
			String resultJson = HttpServiceUtil.sendRequest(url);
582
			String resultJson = HttpServiceUtil.sendRequest(url);
589
			JSONObject resultData = JSON.parseObject(resultJson);
583
			JSONObject resultData = JSON.parseObject(resultJson);
590
			if (StringUtils.isEmpty(resultData.getString("data"))) {
584
			if (StringUtils.isEmpty(resultData.getString("data"))) {