AI接口调整,新增”AI分析中“的状态

master
gongzhenkun 2 years ago
parent 1c57d3b4fb
commit 3cb964dfd3

@ -28,7 +28,6 @@ import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import sun.misc.BASE64Encoder;
@ -328,7 +327,8 @@ public class AppController extends BaseController
if (tRecordResps.isEmpty()) {
return AjaxResult.success(new ArrayList<TRecordResp>());
}
List<TRecordResp> respList = tRecordResps.stream().sorted(Comparator.comparing(TRecordResp::getUploadTime).reversed()).collect(Collectors.toList());
List<TRecordResp> respList = tRecordResps.stream()
.sorted(Comparator.comparing(TRecordResp::getUploadTime, Comparator.nullsLast(Date::compareTo)).reversed()).collect(Collectors.toList());
return AjaxResult.success(respList);
}
@ -416,11 +416,18 @@ public class AppController extends BaseController
@PostMapping("/ai/{recordId}")
@ApiOperation("ai接口")
@Log(title = "调用ai接口", businessType = BusinessType.OTHER)
@Transactional
public AjaxResult aiPost(@PathVariable("recordId") Long recordId, @RequestBody AIPostReqEx aiPostReqEx)
{
AiPostReq aiPostReq = new AiPostReq();
BeanUtils.copyProperties(aiPostReqEx, aiPostReq);
logger.info("update recordId is '{}' status. system time is '{}'", recordId, System.currentTimeMillis());
TRecord tRecord = new TRecord();
tRecord.setId(recordId);
// APP跳转页面需要立刻修改记录状态
tRecord.setStatus("2");
tRecord.setAppDealTime(aiPostReqEx.getAppDealTime());
logger.info("update record status is '{}', record is '{}'",tRecord.getStatus(), tRecord);
tRecordService.updateTRecord(tRecord);
//删除同一次预约调用多次ai接口的图片数据
logger.info("aiPost param is {}", aiPostReq);
imageService.deleteTImageByThirdId(recordId);
@ -428,16 +435,11 @@ public class AppController extends BaseController
ObjectMapper mapper = new ObjectMapper();
String URL = RequestParamsUtil.HTTP + ip + RequestParamsUtil.SEPARATOR + port + url;
JSONObject jsonObject = new JSONObject();
TRecord tRecord = new TRecord();
tRecord.setId(recordId);
tRecord.setStatus("1");
tRecord.setAppDealTime(aiPostReqEx.getAppDealTime());
tRecordService.updateTRecord(tRecord);
String result;
Date start;
Date end;
try
{
Map<String,Object> data = new HashMap<>();
try {
start = new Date();
if (aiPostReq.getUsr() != null) {
aiPostReq.getUsr().setTs_submit_ai(start.getTime());
@ -445,37 +447,39 @@ public class AppController extends BaseController
logger.info("ai param is {}", aiPostReq);
result = HttpUtils.sendPost(URL, mapper.writeValueAsString(delNullData(aiPostReq)));
end = new Date();
}
catch (Exception e)
{
throw new ServiceException(e.getMessage());
}
if (!StringUtils.isEmpty(result))
{
JSONObject data = JSONObject.parseObject(result);
Integer code = data.getInteger("code");
if(code != 200 && code != 204){
TRecord tRecord1 = new TRecord();
tRecord1.setId(recordId);
tRecord1.setStatus("0");
tRecordService.updateTRecord(tRecord1);
throw new ServiceException(data.getString("msg"));
} catch (Exception e) {
// AI接口异常需要重置当前记录状态
updateRecordStatus(recordId, "0");
logger.error("AI result exception, msg is {}", e.getMessage());
return AjaxResult.error("AI result exception, please try again!", data);
}
if (StringUtils.isEmpty(result)) {
// AI接口非正常返回需要重置当前记录状态
updateRecordStatus(recordId, "0");
return AjaxResult.error(200,"AI result is null. please try again!");
} else {
JSONObject resultJB = JSONObject.parseObject(result);
Integer code = resultJB.getInteger("code");
if (code != 200 && code != 204) {
// AI接口非正常返回需要重置当前记录状态
updateRecordStatus(recordId, "0");
throw new ServiceException(resultJB.getString("msg"));
}
if (code == 204) {
TRecord tRecord1 = new TRecord();
tRecord1.setId(recordId);
tRecord1.setStatus("0");
tRecordService.updateTRecord(tRecord1);
return AjaxResult.error(code, data.getString("msg"));
// AI接口非正常返回需要重置当前记录状态
updateRecordStatus(recordId, "0");
return AjaxResult.error(code, resultJB.getString("msg"));
}
jsonObject = removeBase64Image(data,recordId);
// 正常返回记录状态置为“1”
tRecord.setStatus("1");
jsonObject = removeBase64Image(resultJB, recordId);
tRecord.setUploadTime(start);
tRecord.setAiResultReturnTime(end);
tRecord.setAiResult(JSONObject.toJSONString(jsonObject, SerializerFeature.WriteMapNullValue));
tRecord.setAiResult2(JSONObject.toJSONString(jsonObject, SerializerFeature.WriteMapNullValue));
logger.info("update record status is '{}', record is '{}'",tRecord.getStatus(), tRecord);
tRecordService.updateTRecord(tRecord);
}
Map<String,Object> data = new HashMap<>();
data.put("result",jsonObject);
TImage tImage = new TImage();
tImage.setThirdId(recordId);
@ -484,6 +488,13 @@ public class AppController extends BaseController
return AjaxResult.success(data);
}
private void updateRecordStatus(Long recordId, String status) {
TRecord tRecord1 = new TRecord();
tRecord1.setId(recordId);
tRecord1.setStatus(status);
tRecordService.updateTRecord(tRecord1);
}
@GetMapping("/image/{recordId}")
@ApiOperation("获取图片接口")
@Log(title = "获取图片接口", businessType = BusinessType.OTHER)

@ -4,6 +4,9 @@ import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.enums.BusinessType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -88,6 +91,7 @@ public class CommonController
ajax.put("fileName", fileName);
ajax.put("newFileName", FileUtils.getName(fileName));
ajax.put("originalFilename", file.getOriginalFilename());
log.info("upload result is {}", ajax);
return ajax;
}
catch (Exception e)

Loading…
Cancel
Save