Browse Source

华研EIS 增加DCR附件上传接口

xiaost 1 year ago
parent
commit
d4c4f587d8

+ 1 - 1
pom.xml

@@ -104,7 +104,7 @@
 		<dependency>
 			<groupId>org.apache.commons</groupId>
 			<artifactId>commons-io</artifactId>
-			<version>1.3.2</version>
+			<version>2.4</version>
 		</dependency>
 
 		<dependency>

+ 24 - 0
src/main/java/com/uas/eis/controller/MESDataController.java

@@ -5,7 +5,9 @@ import com.uas.eis.sdk.resp.ApiResponse;
 import com.uas.eis.service.MESDataService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
 import java.util.List;
@@ -137,5 +139,27 @@ public class MESDataController {
         return mesDataService.checkDCRQRCode(accessKey, requestId, data);
     }
 
+    /**
+     * DCR 附件上传
+     * @param file
+     * @return
+     */
+    @RequestMapping("/api/mes/uploadDCRFile")
+    public ApiResult<String> uploadDCRFile(HttpServletRequest request, @RequestParam("file") MultipartFile file){
+        String accessKey = request.getHeader("AccessKey");
+        String requestId = request.getHeader("RequestId");
+        try {
+            long size = file.getSize();
+            if (size > 524288000) {
+                return ApiResponse.failRsp("10011","文件过大!");
+            }
+            return mesDataService.uploadDCRFile(accessKey,requestId,file);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return ApiResponse.failRsp( "10011","文件过大,上传失败");
+        }
+
+    }
+
 
 }

+ 6 - 0
src/main/java/com/uas/eis/service/MESDataService.java

@@ -1,7 +1,9 @@
 package com.uas.eis.service;
 
 import com.uas.eis.sdk.entity.ApiResult;
+import org.springframework.web.multipart.MultipartFile;
 
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -25,4 +27,8 @@ public interface MESDataService {
 
 	ApiResult<String> checkDCRQRCode(String accessKey, String requestId, String data);
 
+	int saveFilePath(String accessKey, String requestId,String path, int size, String filename);
+
+	ApiResult<String> uploadDCRFile(String accessKey, String requestId, MultipartFile file) throws IOException;
+
 }

+ 49 - 5
src/main/java/com/uas/eis/serviceImpl/MESDataServiceImpl.java

@@ -2,23 +2,24 @@ package com.uas.eis.serviceImpl;
 
 import com.uas.eis.core.config.SpObserver;
 import com.uas.eis.dao.BaseDao;
-import com.uas.eis.dto.DataCenter;
 import com.uas.eis.entity.ErrorMessage;
 import com.uas.eis.exception.ApiSystemException;
 import com.uas.eis.sdk.entity.ApiResult;
 import com.uas.eis.sdk.resp.ApiResponse;
 import com.uas.eis.service.MESDataService;
 import com.uas.eis.utils.*;
+import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
 
+import java.io.File;
+import java.io.IOException;
 import java.sql.Timestamp;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 @Service
 public class MESDataServiceImpl implements MESDataService {
@@ -351,6 +352,49 @@ public class MESDataServiceImpl implements MESDataService {
 		}
 	}
 
+	@Override
+	@Transactional
+	public int saveFilePath(String accessKey, String requestId,String path, int size, String filename) {
+		String AE_MASTER = checkAccessKey(accessKey, requestId);
+		SpObserver.putSp(AE_MASTER);
+		int id = baseDao.getSeqId("filepath_seq");
+		/**
+		 * 文件名含单引号无法下载*/
+		filename=filename.replaceAll(",", ",");
+		baseDao.execute("INSERT INTO filepath(fp_id,fp_path,fp_size,fp_man,fp_date,fp_name) values(" + id + ",'" + path + "'," + size
+				+ ",'" + accessKey+ "'," + DateUtil.parseDateToOracleString(Constant.YMD_HMS, new Date()) + ",'" + filename
+				+ "')");
+		baseDao.execute("insert into DCRFILEDATA (DF_ID ,DF_DATE,DF_INMAN,DF_ATTACH,DF_FILENAME)" +
+				" select DCRFILEDATA_seq.nextval,sysdate,?,?,? from dual ",accessKey,id,filename);
+		return id;
+	}
+
+	@Override
+	public ApiResult<String> uploadDCRFile(String accessKey, String requestId, MultipartFile file) throws IOException {
+		try {
+			String filename = file.getOriginalFilename();
+			String path = saveFile(file);
+			int id = saveFilePath(accessKey, requestId,path, (int) file.getSize(), filename);
+			return ApiResponse.successRsp("0","Success", requestId);
+		}catch (Exception e) {
+			e.printStackTrace();
+			return ApiResponse.failRsp( "10011","上传失败"+(e.getMessage().length()>400 ? e.getMessage().substring(0,400):e.getMessage()));
+		}
+	}
+
+   private String saveFile(MultipartFile file) throws IOException {
+	   String path = "/dcr";
+	   File filep = new File(path);
+	   String fileName = file.getOriginalFilename();
+	   if (!filep.isDirectory()) {
+		   filep.mkdir();
+	   }
+	   path = path+File.separator +fileName;
+	   FileUtils.copyInputStreamToFile(file.getInputStream(),new File(path));
+	   return path;
+   }
+
+
 	private String checkAccessKey(String accessKey,String requestId){
 		Object accessSecret_O = baseDao.getFieldDataByCondition("APIEMPLOYEE", "AE_SECRET", "AE_KEY='" + accessKey + "'");
 		Object AE_MASTER = baseDao.getFieldDataByCondition("APIEMPLOYEE", "AE_MASTER", "AE_KEY='" + accessKey + "'");