|
|
@@ -87,67 +87,71 @@ public class CheckService {
|
|
|
private RemoteLaboratoryService laboratoryService;
|
|
|
|
|
|
|
|
|
-
|
|
|
private static final String warn = "违规操作告警:请{},离开实验室!";
|
|
|
|
|
|
/**
|
|
|
* 合并检查 三合一套餐
|
|
|
*/
|
|
|
public R checkAndCommit(Long id, MultipartFile file, Long subId) {
|
|
|
+ logger.info("===============1.进入方法=================");
|
|
|
try {
|
|
|
int alarmNum = 0;
|
|
|
//========= 请求超时验证部分开始 ===========
|
|
|
//600 则代表退出验证流程 需要重新刷卡
|
|
|
R<Long> fail = getObjectR(id);
|
|
|
- logger.info("===============1================={}",fail);
|
|
|
- if (fail.getCode() != 200) return fail;
|
|
|
+ logger.info("===============1================={}", fail);
|
|
|
+ if (fail.getCode() != 200) {
|
|
|
+ return fail;
|
|
|
+ }
|
|
|
//根据实验室id查询检查项
|
|
|
R<Map<Object, Object>> subject = laboratoryService.getCheckInfo(subId);
|
|
|
- logger.info("===============2================={}",subject);
|
|
|
- if (subject.getCode() != 200) return subject;
|
|
|
+ logger.info("===============2================={}", subject);
|
|
|
+ if (subject.getCode() != 200) {
|
|
|
+ return subject;
|
|
|
+ }
|
|
|
Map<Object, Object> map = subject.getData();
|
|
|
- Object labCheckInObj=map.get("checkIn");
|
|
|
- if(StringUtils.isNull(labCheckInObj)){
|
|
|
+ Object labCheckInObj = map.get("checkIn");
|
|
|
+ if (StringUtils.isNull(labCheckInObj)) {
|
|
|
return R.fail(700, "未配置检查项");
|
|
|
}
|
|
|
- String labSkipped="0";
|
|
|
- String labCheckCount="2";
|
|
|
- Object labSkippedObj=map.get("skipped");
|
|
|
- if(StringUtils.isNotNull(labSkippedObj)){
|
|
|
- labSkipped=String.valueOf(labSkippedObj);
|
|
|
+ String labSkipped = "0";
|
|
|
+ String labCheckCount = "2";
|
|
|
+ Object labSkippedObj = map.get("skipped");
|
|
|
+ if (StringUtils.isNotNull(labSkippedObj)) {
|
|
|
+ labSkipped = String.valueOf(labSkippedObj);
|
|
|
}
|
|
|
- Object labCheckCountObj=map.get("checkCount");
|
|
|
- if(StringUtils.isNotNull(labCheckCountObj)){
|
|
|
- labCheckCount=String.valueOf(labCheckCountObj);
|
|
|
+ Object labCheckCountObj = map.get("checkCount");
|
|
|
+ if (StringUtils.isNotNull(labCheckCountObj)) {
|
|
|
+ labCheckCount = String.valueOf(labCheckCountObj);
|
|
|
}
|
|
|
- logger.info("########{}########",labCheckCount);
|
|
|
+ logger.info("########{}########", labCheckCount);
|
|
|
String labCheckIn = String.valueOf(labCheckInObj);
|
|
|
String[] checkItem = labCheckIn.split(",");
|
|
|
for (String code : checkItem) {
|
|
|
//========= 获取算法INFO ===========
|
|
|
AlgorithmYml.CheckValid checkValid = algorithmYml.getCheckValid(Integer.valueOf(code));
|
|
|
MultiValueMap<String, Object> params = getStringObjectMultiValueMap(checkValid, String.valueOf(id));
|
|
|
- HttpEntity<MultiValueMap<String, Object>> files=getHttpEntityMap(file,params);
|
|
|
- ImgPostResponse<DataPostAnalysisRespDto> send = HttpUtils.send(restTemplateLocal,files,algorithmYml);
|
|
|
+ HttpEntity<MultiValueMap<String, Object>> files = getHttpEntityMap(file, params);
|
|
|
+ ImgPostResponse<DataPostAnalysisRespDto> send = HttpUtils.send(restTemplateLocal, files, algorithmYml);
|
|
|
if (send == null || send.getStatus_code() != 1000) {
|
|
|
assert send != null;
|
|
|
logger.error(send.getMessage());
|
|
|
return R.fail("算法服务错误,请重试!");
|
|
|
}
|
|
|
- R algorithm = saveAlgorithm(send,checkValid);
|
|
|
+ R algorithm = saveAlgorithm(send, checkValid);
|
|
|
if (algorithm.getCode() != 200) return algorithm;
|
|
|
DataPostAnalysisRespDto data = send.getData();
|
|
|
|
|
|
- Map<String,Object> result = (Map<String, Object>) data.getAnalysisDatas().get(0).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("============{}============",data);
|
|
|
- logger.info("============算法请求日志打印:算法ID:{},请求结果:{}",code,algorithmData.getOrDefault("is_alert", ""));
|
|
|
+ Map<String, Object> result = (Map<String, Object>) data.getAnalysisDatas().get(0).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("============{}============", data);
|
|
|
+ logger.info("============算法请求日志打印:算法ID:{},请求结果:{}", code, algorithmData.getOrDefault("is_alert", ""));
|
|
|
//通过的
|
|
|
- if(algorithmData.getOrDefault("is_alert", "").toString().equals("false") && !objects.isEmpty()){
|
|
|
+ if (algorithmData.getOrDefault("is_alert", "").toString().equals("false") && !objects.isEmpty()) {
|
|
|
alarmNum++;
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
//不跳过
|
|
|
if (StringUtils.isNotEmpty(labSkipped) && labSkipped.equals("1")) {
|
|
|
//如果没有通过则次数加一
|
|
|
@@ -155,7 +159,7 @@ public class CheckService {
|
|
|
String key = Constants.SINGIN_CHECK_JUMP_KEY + id + "_" + code;
|
|
|
Long increment = redisService.redisTemplate.opsForValue().increment(key);
|
|
|
redisService.expire(key, Constants.SINGIN_OUT_TIME);
|
|
|
- if (increment!=null && increment >= Integer.parseInt(labCheckCount)) {
|
|
|
+ if (increment != null && increment >= Integer.parseInt(labCheckCount)) {
|
|
|
//黎晨这里让把跳过时状态码改为700,所以700的含义为检查失败并且跳过
|
|
|
return R.fail(700, "符合跳过条件执行跳过");
|
|
|
}
|
|
|
@@ -163,8 +167,8 @@ public class CheckService {
|
|
|
return R.fail(300, "算法识别未通过", code);
|
|
|
}
|
|
|
Boolean f = send.getStatus_code() == 1000;
|
|
|
- String msg=f?"解析成功!":"解析失败!";
|
|
|
- send(code, id, f,msg);
|
|
|
+ String msg = f ? "解析成功!" : "解析失败!";
|
|
|
+ send(code, id, f, msg);
|
|
|
}
|
|
|
if (alarmNum == checkItem.length) {
|
|
|
return R.ok();
|
|
|
@@ -177,13 +181,15 @@ public class CheckService {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * @param id 进出记录ID
|
|
|
+ * @param id 进出记录ID
|
|
|
*/
|
|
|
public R checkAndCommit(String code, MultipartFile file, Long id) {
|
|
|
//========= 请求超时验证部分开始 ===========
|
|
|
//600 则代表退出验证流程 需要重新刷卡
|
|
|
R<Long> fail = getObjectR(id);
|
|
|
- if (fail.getCode() != 200) return fail;
|
|
|
+ if (fail.getCode() != 200) {
|
|
|
+ return fail;
|
|
|
+ }
|
|
|
//========= 请求超时验证部分结束 ===========
|
|
|
//========= 获取算法INFO ===========
|
|
|
AlgorithmYml.CheckValid checkValid = algorithmYml.getCheckValid(Integer.valueOf(code));
|
|
|
@@ -200,7 +206,7 @@ public class CheckService {
|
|
|
R apply = R.fail("算法服务错误,请重试!");
|
|
|
Boolean f = false;
|
|
|
try {
|
|
|
- if (send == null || send.getInteger("status_code") != 1000l) {
|
|
|
+ if (send == null || send.getInteger("status_code") != 1000L) {
|
|
|
apply = R.fail("算法服务错误,请重试!");
|
|
|
return apply;
|
|
|
}
|
|
|
@@ -226,11 +232,11 @@ public class CheckService {
|
|
|
apply.setCode(700);
|
|
|
}
|
|
|
}
|
|
|
- }catch (Exception ex){
|
|
|
+ } catch (Exception ex) {
|
|
|
ex.printStackTrace();
|
|
|
apply = R.fail("算法服务返回数据错误,请联系管理员!");
|
|
|
return apply;
|
|
|
- } finally{
|
|
|
+ } finally {
|
|
|
// //无论成功失败,插入记录数据,异步请求远程接口
|
|
|
send(code, id, f, apply.getMsg());
|
|
|
// //保存识别记录
|
|
|
@@ -248,7 +254,7 @@ public class CheckService {
|
|
|
}
|
|
|
//=========算法服务返回结果验证结束
|
|
|
logger.info(apply.toString());
|
|
|
- if (apply.getCode()==200){
|
|
|
+ if (apply.getCode() == 200) {
|
|
|
//加奖励分
|
|
|
// laboratoryService.addRecord();
|
|
|
}
|
|
|
@@ -370,14 +376,18 @@ public class CheckService {
|
|
|
}
|
|
|
//刷新key
|
|
|
boolean expire = redisService.expire(Constants.SINGIN_id_KEY + id, 120);
|
|
|
- if (!expire) return R.fail(600, "签到&签出已超时,请重新刷卡重试!");
|
|
|
+ if (!expire) {
|
|
|
+ return R.fail(600, "签到&签出已超时,请重新刷卡重试!");
|
|
|
+ }
|
|
|
return R.ok(subId);
|
|
|
}
|
|
|
|
|
|
//给黎晨用的模拟方法 他让给他mock个方法测试
|
|
|
public R mockTest(String code, MultipartFile file, Long id) {
|
|
|
R<Long> objectR = getObjectR(id);
|
|
|
- if (objectR.getCode() != 200) return objectR;
|
|
|
+ if (objectR.getCode() != 200) {
|
|
|
+ return objectR;
|
|
|
+ }
|
|
|
//随机成功或失败
|
|
|
Boolean f = RandomUtil.randomInt(0, 2) == 0;
|
|
|
//无论成功失败,插入记录数据,异步请求远程接口
|
|
|
@@ -402,17 +412,20 @@ public class CheckService {
|
|
|
|
|
|
public void send(String code, Long id, Boolean f, String msg) {
|
|
|
String token = Objects.requireNonNull(ServletUtils.getRequest()).getHeader(SecurityConstants.TOKEN_AUTHENTICATION);
|
|
|
- if (CharSequenceUtil.isBlank(token)) throw new ServiceException("无权限!");
|
|
|
+ if (CharSequenceUtil.isBlank(token)) {
|
|
|
+ throw new ServiceException("无权限!");
|
|
|
+ }
|
|
|
sendSginAccessLogService.sendAddLogRest(code, id, f, msg, token, algorithmYml.getLoginUri() + algorithmYml.getCheckLogUrl());
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取算法请求地址
|
|
|
+ *
|
|
|
* @param checkValid
|
|
|
* @param id
|
|
|
* @return
|
|
|
*/
|
|
|
- private String getPostUrl(AlgorithmYml.CheckValid checkValid, Long id){
|
|
|
+ private String getPostUrl(AlgorithmYml.CheckValid checkValid, Long id) {
|
|
|
//设置请求体,注意是LinkedMultiValueMap
|
|
|
MultiValueMap<String, Object> params = getStringObjectMultiValueMap(checkValid, String.valueOf(id));
|
|
|
Set<String> keySet = params.keySet();
|
|
|
@@ -497,31 +510,32 @@ public class CheckService {
|
|
|
|
|
|
/**
|
|
|
* 存储数据
|
|
|
+ *
|
|
|
* @param send
|
|
|
* @param checkValid
|
|
|
*/
|
|
|
- private R saveAlgorithm(ImgPostResponse<DataPostAnalysisRespDto> send,AlgorithmYml.CheckValid checkValid){
|
|
|
+ private R saveAlgorithm(ImgPostResponse<DataPostAnalysisRespDto> send, AlgorithmYml.CheckValid checkValid) {
|
|
|
DataPostAnalysisRespDto analysisRespDto = send.getData();
|
|
|
List<AnalysisData> analysisDatas = analysisRespDto.getAnalysisDatas();
|
|
|
- if (!analysisDatas.isEmpty()){
|
|
|
- for (AnalysisData data:analysisDatas) {
|
|
|
+ if (!analysisDatas.isEmpty()) {
|
|
|
+ for (AnalysisData data : analysisDatas) {
|
|
|
String picture = data.getRet_image();
|
|
|
- String header = "data:image/jpeg;base64,"+picture;
|
|
|
+ String header = "data:image/jpeg;base64," + picture;
|
|
|
MultipartFile multipartFile = Base64DecodedMultipartFile.base64ToMultipart(header);
|
|
|
R<SysFile> sysFileR = remoteFileService.upload(multipartFile);
|
|
|
String imageUrl = sysFileR.getData().getUrl();
|
|
|
- Map<String,Object> result = (Map<String, Object>) data.getResult();
|
|
|
- Map<String,Object> map=new HashMap<>();
|
|
|
- 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){
|
|
|
+ Map<String, Object> result = (Map<String, Object>) data.getResult();
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ 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) {
|
|
|
map.put("isAlarm", 0);
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
map.put("isAlarm", 1);
|
|
|
}
|
|
|
- map.put("did",checkValid.getDid());
|
|
|
- map.put("aid",checkValid.getAlgoId());
|
|
|
+ map.put("did", checkValid.getDid());
|
|
|
+ map.put("aid", checkValid.getAlgoId());
|
|
|
map.put("src_img", imageUrl);
|
|
|
map.put("type", "image");
|
|
|
map.put("algorithmName", checkValid.getAlgorithmName());
|