UploadFileServiceImpl.java
3.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
package com.objecteye.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.objecteye.config.RabbitmqConfig;
import com.objecteye.entity.ResponseParam;
import com.objecteye.entity.UploadVehicleResult;
import com.objecteye.entity.VpAnalysisParam;
import com.objecteye.exception.CustomXException;
import com.objecteye.service.IUploadFileService;
import com.objecteye.utils.GlobalUtil;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
@Component
public class UploadFileServiceImpl implements IUploadFileService {
@Autowired
private RabbitTemplate rabbitTemplate;
@Value("${picture.storePath}")
private String storePath;
@Value("${picture.http}")
private String http;
@Value("${requestFile}")
private String url;
/**
* 上传文件解析并保存到mongo, 代替ftp
*
* @param multipartFile 上传文件
* @return 结果集
*/
@Override
public JSONObject uploadFile2Mongo(MultipartFile multipartFile) throws IOException {
// 格式化文件名由format开头, e.g. format-15321354564-12.12654_15.156567.jpg
String fileName = multipartFile.getOriginalFilename();
if (fileName == null || "".equals(fileName)) {
throw new CustomXException("文件名不能不能为空", "201");
}
String picPath = storePath + fileName;
File newFile = new File(picPath);
multipartFile.transferTo(newFile);
String picUrl = http + fileName;
String latitude = null;
String longitude = null;
long captureTime = System.currentTimeMillis();
if (fileName.startsWith("format")) {
String[] fileNameMsg = fileName.split("-");
captureTime = Long.parseLong(fileNameMsg[1]);
String[] position = fileNameMsg[2].split("_");
latitude = position[0];
longitude = position[1].substring(0, position[1].lastIndexOf("."));
}
String body = GlobalUtil.httpExecute(url, newFile);
ResponseParam responseParam = JSON.parseObject(body, ResponseParam.class);
String code = responseParam.getCode();
if ("0".equals(code)) {
String s1 = JSON.toJSONString(responseParam.getResult());
VpAnalysisParam vpAnalysisParam = JSON.parseObject(s1, VpAnalysisParam.class);
UploadVehicleResult uploadVehicleResult = new UploadVehicleResult();
uploadVehicleResult.setCount(vpAnalysisParam.getCount());
uploadVehicleResult.setInfo(vpAnalysisParam.getInfo());
uploadVehicleResult.setPicName(fileName);
uploadVehicleResult.setImageUrl(picUrl);
uploadVehicleResult.setLatitude(latitude);
uploadVehicleResult.setLongitude(longitude);
uploadVehicleResult.setCaptureTime(captureTime);
String s = JSON.toJSONString(uploadVehicleResult);
rabbitTemplate.convertAndSend(RabbitmqConfig.EXCHANGE_TOPICS_INFORM, "inform.store", s);
}
return new JSONObject();
}
}