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(); } }