|
|
@@ -139,60 +139,106 @@ public class CheckService {
|
|
|
//添加一条算法请求记录
|
|
|
R alg = insertRequestRecordLog(orgImgUrl, subId, checkValid);
|
|
|
logger.info("【调用算法服务】 添加算法调用日志,添加结果:"+JSONObject.toJSONString(alg));
|
|
|
+
|
|
|
+ //请求算法服务
|
|
|
ImgPostResponse<AnalysisReturnData> send = HttpUtils.sendV5(restTemplateLocal, files, algorithmYml);
|
|
|
- //算法记录更新
|
|
|
+ AlgorithmResponseResult responseResult = getResponseResult(send);
|
|
|
+ //添加成功,更新算法日志记录
|
|
|
if (alg.getCode() == 200) {
|
|
|
- try {
|
|
|
- updateRequestRecordLog(alg.getData() != null?Long.valueOf(alg.getData()+""):null, send);
|
|
|
- logger.info("【调用算法服务】 更新算法调用日志");
|
|
|
- } catch (Exception e) {
|
|
|
- logger.error("【调用算法服务】 更新日志异常,异常信息",e);
|
|
|
- }
|
|
|
+ updateRequestRecordLog(alg.getData() != null?Long.valueOf(alg.getData()+""):null, responseResult);
|
|
|
+ logger.info("【调用算法服务】 更新算法调用日志记录");
|
|
|
}
|
|
|
//判断算法
|
|
|
- if (send == null || send.getStatus_code() != 1000) {
|
|
|
- assert send != null;
|
|
|
- logger.error("【调用算法服务】 算法服务调用失败,响应信息:"+ JSONObject.toJSONString(send));
|
|
|
- return R.fail("算法服务错误,请重试!");
|
|
|
- }
|
|
|
- AnalysisReturnData data = send.getData();
|
|
|
- Map<String, Object> result = (Map<String, Object>) data.getResult();
|
|
|
- Map<String, Object> algorithmData = (Map<String, Object>) result.get("algorithm_data");
|
|
|
- Map<String, Object> modelResult = (Map<String, Object>) result.get("model_data");
|
|
|
- List<Map<String, Object>> objects = (List<Map<String, Object>>) modelResult.get("objects");
|
|
|
- logger.info("【调用算法服务】 算法请求日志打印:算法ID:{},请求结果:{}", code, algorithmData.getOrDefault("is_alert", ""));
|
|
|
- //通过
|
|
|
- if (algorithmData.getOrDefault("is_alert", "").toString().equals("false") && !objects.isEmpty()) {
|
|
|
- alarmNum++;
|
|
|
- } else {
|
|
|
- //不跳过
|
|
|
- if (StringUtils.isNotEmpty(labSkipped) && labSkipped.equals("1")) {
|
|
|
- //如果没有通过则次数加一
|
|
|
- //键为前缀+签到id +下划线+验证类型
|
|
|
- String key = BaseConstants.SINGIN_CHECK_JUMP_KEY + id + "_" + code;
|
|
|
- Long increment = redisTemplate.opsForValue().increment(key);
|
|
|
- redisService.expire(key, BaseConstants.SINGIN_OUT_TIME);
|
|
|
- if (increment != null && increment >= Integer.parseInt(labCheckCount)) {
|
|
|
- //黎晨这里让把跳过时状态码改为700,所以700的含义为检查失败并且跳过
|
|
|
- return R.fail(700, "符合跳过条件执行跳过");
|
|
|
+ if (responseResult.getCode() == 1000) {
|
|
|
+ //通过
|
|
|
+ if (responseResult.getIsPass()) {
|
|
|
+ alarmNum++;
|
|
|
+ } else {
|
|
|
+ //不跳过
|
|
|
+ if (StringUtils.isNotEmpty(labSkipped) && labSkipped.equals("1")) {
|
|
|
+ //如果没有通过则次数加一
|
|
|
+ //键为前缀+签到id +下划线+验证类型
|
|
|
+ String key = BaseConstants.SINGIN_CHECK_JUMP_KEY + id + "_" + code;
|
|
|
+ Long increment = redisTemplate.opsForValue().increment(key);
|
|
|
+ redisService.expire(key, BaseConstants.SINGIN_OUT_TIME);
|
|
|
+ if (increment != null && increment >= Integer.parseInt(labCheckCount)) {
|
|
|
+ //黎晨这里让把跳过时状态码改为700,所以700的含义为检查失败并且跳过
|
|
|
+ return R.fail(700, "符合跳过条件执行跳过");
|
|
|
+ }
|
|
|
}
|
|
|
+ return R.fail(300, "算法识别未通过", code);
|
|
|
}
|
|
|
- return R.fail(300, "算法识别未通过", code);
|
|
|
+ Boolean f = send.getStatus_code() == 1000;
|
|
|
+ String msg = f ? "解析成功!" : "解析失败!";
|
|
|
+ send(code, id, f, msg);
|
|
|
+ } else {
|
|
|
+ assert send != null;
|
|
|
+ //logger.error("【调用算法服务】 算法服务调用失败,响应信息:"+ JSONObject.toJSONString(send));
|
|
|
+ return R.fail("算法服务错误,请重试!");
|
|
|
}
|
|
|
- Boolean f = send.getStatus_code() == 1000;
|
|
|
- String msg = f ? "解析成功!" : "解析失败!";
|
|
|
- send(code, id, f, msg);
|
|
|
}
|
|
|
if (alarmNum == checkItem.length) {
|
|
|
return R.ok();
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
- logger.error("【算法服务异常】异常信息",e);
|
|
|
+ logger.error("【调用算法服务】 算法服务调用发生异常", e);
|
|
|
}
|
|
|
return R.fail();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 获取响应结果
|
|
|
+ * @param send
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private AlgorithmResponseResult getResponseResult(ImgPostResponse<AnalysisReturnData> send) {
|
|
|
+ AlgorithmResponseResult responseResult = new AlgorithmResponseResult();
|
|
|
+ if (send != null) {
|
|
|
+ responseResult.setCode(send.getStatus_code());
|
|
|
+ responseResult.setMessage(send.getMessage());
|
|
|
+ if (send.getStatus_code() == 1000 && send.getData() != null) {
|
|
|
+ AnalysisReturnData data = send.getData();
|
|
|
+ responseResult.setAid(data.getAid());
|
|
|
+ responseResult.setCid(data.getCid());
|
|
|
+ responseResult.setRetImage(data.getRet_image());
|
|
|
+ responseResult.setSrcImage(data.getSrc_image());
|
|
|
+ //检查结果
|
|
|
+ JSONObject result = (JSONObject) data.getResult();
|
|
|
+ JSONObject algorithmData = result.getJSONObject("algorithm_data");
|
|
|
+ JSONObject model = result.getJSONObject("model_data");
|
|
|
+ List<Object> objects = model.getJSONArray("objects");
|
|
|
+ //是否验证通过
|
|
|
+ //if(!algorithmData.getBoolean("is_alert") && objects.size()>0){
|
|
|
+ //算法厂家技术人员前期要添加objects判断精准性,后面对接人员要让去掉对objects的判断
|
|
|
+ if (!algorithmData.getBoolean("is_alert")) {
|
|
|
+ //不报警,代表验证通过
|
|
|
+ responseResult.setIsPass(Boolean.TRUE);
|
|
|
+ } else {
|
|
|
+ //报警,代表不通过
|
|
|
+ responseResult.setIsPass(Boolean.FALSE);
|
|
|
+ }
|
|
|
+ responseResult.setObjects(objects);
|
|
|
+ //存响应实体数据,去掉图片
|
|
|
+ data.setRet_image("");
|
|
|
+ data.setSrc_image("");
|
|
|
+ ImgPostResponse<AnalysisReturnData> response = new ImgPostResponse<>();
|
|
|
+ response.setData(data);
|
|
|
+ response.setStatus_code(send.getStatus_code());
|
|
|
+ response.setMessage(send.getMessage());
|
|
|
+ responseResult.setResponseBody(JSONObject.toJSONString(response));
|
|
|
+ } else {
|
|
|
+ responseResult.setResponseBody(JSONObject.toJSONString(send));
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ responseResult.setCode(0L);
|
|
|
+ responseResult.setMessage("算法服务未响应");
|
|
|
+ responseResult.setResponseBody("算法服务未响应");
|
|
|
+ }
|
|
|
+ logger.info("【调用算法服务】 算法服务请求结果:code = {}, message = {}, isPass = {}", responseResult.getCode(), responseResult.getMessage(), responseResult.getIsPass());
|
|
|
+ return responseResult;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 添加日志记录
|
|
|
* @param fileUrl
|
|
|
* @param subId
|
|
|
@@ -213,52 +259,38 @@ public class CheckService {
|
|
|
/**
|
|
|
* 算法调用日志更新
|
|
|
* @param id
|
|
|
- * @param send
|
|
|
+ * @param responseResult
|
|
|
*/
|
|
|
- private void updateRequestRecordLog(Long id,ImgPostResponse<AnalysisReturnData> send) {
|
|
|
- Algorithm algorithm = new Algorithm();
|
|
|
- algorithm.setId(id);
|
|
|
- //请求成功
|
|
|
- if (send != null && send.getStatus_code() == 1000) {
|
|
|
- AnalysisReturnData data = send.getData();
|
|
|
- //识别后的图片
|
|
|
- String picture = data.getRet_image();
|
|
|
- String header = "data:image/jpeg;base64,"+picture;
|
|
|
- MultipartFile multipartFile = Base64DecodedMultipartFile.base64ToMultipart(header);
|
|
|
- R<SysFile> sysFileR = remoteFileService.upload(multipartFile);
|
|
|
- String imageUrl = sysFileR.getData().getUrl();
|
|
|
- algorithm.setAlgorithmResult(imageUrl);
|
|
|
- //识别id
|
|
|
- algorithm.setSignId(Long.parseLong(data.getCid()));
|
|
|
- //是否报警
|
|
|
- Map<String, Object> result =(Map<String, Object>)data.getResult();
|
|
|
- Map<String, Object> algorithmData = (Map<String, Object>) result.get("algorithm_data");
|
|
|
- Map<String, Object> modelResult = (Map<String, Object>) result.get("model_data");
|
|
|
- List<Map<String, Object>> objects = (List<Map<String, Object>>) modelResult.get("objects");
|
|
|
- if(algorithmData.getOrDefault("is_alert", "").toString().equals("false") && objects.size()>0){
|
|
|
- algorithm.setIsAlarm(0);
|
|
|
- }else{
|
|
|
- algorithm.setIsAlarm(1);
|
|
|
+ private void updateRequestRecordLog(Long id, AlgorithmResponseResult responseResult) {
|
|
|
+ try {
|
|
|
+ Algorithm algorithm = new Algorithm();
|
|
|
+ algorithm.setId(id);
|
|
|
+ if (responseResult.getCode() == 1000) {
|
|
|
+ //识别后的图片
|
|
|
+ String picture = responseResult.getRetImage();
|
|
|
+ String header = "data:image/jpeg;base64," + picture;
|
|
|
+ MultipartFile multipartFile = Base64DecodedMultipartFile.base64ToMultipart(header);
|
|
|
+ R<SysFile> sysFileR = remoteFileService.upload(multipartFile);
|
|
|
+ String imageUrl = sysFileR.getData().getUrl();
|
|
|
+ algorithm.setAlgorithmResult(imageUrl);
|
|
|
+ //识别id
|
|
|
+ algorithm.setSignId(Long.parseLong(responseResult.getCid()));
|
|
|
+ //是否通过
|
|
|
+ algorithm.setIsAlarm(responseResult.getIsPass()?0:1);
|
|
|
+ algorithm.setStatus(1);
|
|
|
+
|
|
|
+ } else {
|
|
|
+ algorithm.setStatus(0);
|
|
|
}
|
|
|
- algorithm.setStatus(1);
|
|
|
- } else {
|
|
|
- algorithm.setStatus(0);
|
|
|
- }
|
|
|
- //存原始数据
|
|
|
- AnalysisReturnData respData = send != null?send.getData():null;
|
|
|
- if (respData != null) {
|
|
|
- respData.setRet_image("Removed to save respBody");
|
|
|
- respData.setSrc_image("Removed to save respBody");
|
|
|
- ImgPostResponse<AnalysisReturnData> response = new ImgPostResponse<>();
|
|
|
- response.setData(respData);
|
|
|
- response.setStatus_code(send.getStatus_code());
|
|
|
- response.setMessage(send.getMessage());
|
|
|
- algorithm.setRespData(JSONObject.toJSONString(response));
|
|
|
- algorithm.setRespCode(send.getStatus_code());
|
|
|
+ //存响应实体数据
|
|
|
+ algorithm.setRespData(responseResult.getResponseBody());
|
|
|
+ algorithm.setRespCode(responseResult.getCode());
|
|
|
+ algorithm.setUpdateTime(new Date());
|
|
|
+ //logger.info("【算法服务】 更新日志实体信息:"+JSONObject.toJSONString(algorithm));
|
|
|
+ laboratoryService.update(algorithm);
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.error("【调用算法服务】调用算法服务后,更新日志记录发生异常", e);
|
|
|
}
|
|
|
- algorithm.setUpdateTime(new Date());
|
|
|
- //logger.info("【算法服务】 更新日志实体信息:"+JSONObject.toJSONString(algorithm));
|
|
|
- laboratoryService.update(algorithm);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -379,7 +411,6 @@ public class CheckService {
|
|
|
return algorithm;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/**
|
|
|
* @param algorithmResult
|
|
|
* @param type
|