Compare commits

...

2 Commits

@ -4,6 +4,8 @@ import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature; import com.alibaba.fastjson.serializer.SerializerFeature;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
@ -15,6 +17,7 @@ import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.file.FileUtils; import com.ruoyi.common.utils.file.FileUtils;
import com.ruoyi.common.utils.http.HttpUtils; import com.ruoyi.common.utils.http.HttpUtils;
import com.ruoyi.framework.config.ServerConfig;
import com.ruoyi.system.domain.*; import com.ruoyi.system.domain.*;
import com.ruoyi.system.domain.req.*; import com.ruoyi.system.domain.req.*;
import com.ruoyi.system.domain.resp.TRecordResp; import com.ruoyi.system.domain.resp.TRecordResp;
@ -26,8 +29,14 @@ import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import sun.misc.BASE64Encoder;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.imageio.stream.FileImageInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.lang.reflect.Field;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -61,6 +70,9 @@ public class AppController extends BaseController
@Resource @Resource
private ITImageService imageService; private ITImageService imageService;
@Autowired
private ServerConfig serverConfig;
@Value("${aiPost.ip}") @Value("${aiPost.ip}")
private String ip; private String ip;
@Value("${aiPost.port}") @Value("${aiPost.port}")
@ -410,6 +422,122 @@ public class AppController extends BaseController
return AjaxResult.success(images); return AjaxResult.success(images);
} }
@PostMapping("/ai2/{recordId}")
@Log(title = "ai接口备用")
@ApiOperation("ai接口备用")
public AjaxResult aiPost2(@PathVariable("recordId") Long recordId, @RequestBody AiPostReq aiPostReq)
{
//删除同一次预约调用多次ai接口的图片数据
imageService.deleteTImageByThirdId(recordId);
// saveImage(aiPostReq,recordId);
// revertImageToBase64(aiPostReq);
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");
tRecordService.updateTRecord(tRecord);
String result;
Date start;
Date end;
try
{
start = new Date();
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);
if(data.getInteger("code") != 200){
TRecord tRecord1 = new TRecord();
tRecord1.setId(recordId);
tRecord1.setStatus("0");
tRecordService.updateTRecord(tRecord1);
throw new ServiceException(data.getString("msg"));
}
jsonObject = removeBase64Image(data,recordId);
tRecord.setUploadTime(start);
tRecord.setAiResultReturnTime(end);
tRecord.setAiResult(JSONObject.toJSONString(jsonObject, SerializerFeature.WriteMapNullValue));
tRecord.setAiResult2(JSONObject.toJSONString(jsonObject, SerializerFeature.WriteMapNullValue));
tRecordService.updateTRecord(tRecord);
}
Map<String,Object> data = new HashMap<>();
data.put("result",jsonObject);
TImage tImage = new TImage();
tImage.setThirdId(recordId);
List<TImage> images = imageService.selectTImageList(tImage);
data.put("image", images);
return AjaxResult.success(data);
}
public AiPostReq revertImageToBase64(AiPostReq aiPostReq,Long recordId)
{
Base64ResizedRmgSm base64_resized_img_sm = aiPostReq.getBase64_resized_img_sm();
JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(base64_resized_img_sm));
jsonObject.forEach((key,value)->{
if(value instanceof String){
jsonObject.put(key,toBase64((String) value));
TImage tImage = new TImage();
tImage.setThirdId(recordId);
tImage.setPath((String) value);
tImage.setCreateTime(new Date());
tImage.setName("sm_"+key);
imageService.insertTImage(tImage);
}
if(value instanceof List){
((List<?>) value).forEach(o -> {
jsonObject.put(key,toBase64((String) o));
TImage tImage = new TImage();
tImage.setThirdId(recordId);
tImage.setPath((String) o);
tImage.setCreateTime(new Date());
tImage.setName("sm_"+ key+"_" +((List<?>) value).indexOf(o));
imageService.insertTImage(tImage);
});
}
Base64ResizedRmgSm base64ResizedRmgSm = JSONObject.parseObject(jsonObject.toJSONString(), Base64ResizedRmgSm.class);
aiPostReq.setBase64_resized_img_sm(base64ResizedRmgSm);
});
return null;
}
public String toBase64(String path){
return sourceToBase64(RuoYiConfig.getProfile() + StringUtils.substringAfter(path, Constants.RESOURCE_PREFIX));
}
public static String sourceToBase64(String path) {
byte[] data = null;
FileImageInputStream input = null;
try {
input = new FileImageInputStream(new File(path));
ByteArrayOutputStream output = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
int numBytesRead = 0;
while((numBytesRead = input.read(buf)) != -1){
output.write(buf, 0, numBytesRead);
}
data = output.toByteArray();
output.close();
input.close();
} catch (Exception e) {
e.printStackTrace();
}
BASE64Encoder base64Encoder = new BASE64Encoder();
return base64Encoder.encode(data);
}
private void saveImage(AiPostReq aiPostReq,Long recordId) private void saveImage(AiPostReq aiPostReq,Long recordId)
{ {

Loading…
Cancel
Save