Browse Source

行之成EIS增加DCR附件上传接口

xiaost 4 months ago
parent
commit
63d615f084

+ 2 - 2
pom.xml

@@ -113,9 +113,9 @@
 			<version>3.14.9</version>
 		</dependency>
 		<dependency>
-			<groupId>org.apache.commons</groupId>
+			<groupId>commons-io</groupId>
 			<artifactId>commons-io</artifactId>
-			<version>1.3.2</version>
+			<version>2.4</version>
 		</dependency>
 
 		<dependency>

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

@@ -3,9 +3,12 @@ package com.uas.eis.controller;
 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.StringUtil;
 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;
@@ -100,5 +103,30 @@ public class MESDataController {
         return ApiResponse.successRsp("0","Success",requestId,list);
     }
 
+    /**
+     * DCR 附件上传
+     * @param file
+     * @return
+     */
+    @RequestMapping("/api/mes/uploadDCRFile")
+    public ApiResult<String> uploadDCRFile(HttpServletRequest request, @RequestParam("file") MultipartFile file, String sncode){
+        String accessKey = request.getHeader("AccessKey");
+        String requestId = request.getHeader("RequestId");
+        try {
+            long size = file.getSize();
+            if (size > 524288000) {
+                return ApiResponse.failRsp("10011","文件过大!");
+            }
+            if(!StringUtil.hasText(sncode)){
+                return ApiResponse.failRsp("10011","sncode必填!");
+            }
+            return mesDataService.uploadDCRFile(accessKey,requestId,file,sncode);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return ApiResponse.failRsp( "10011","上传失败"+(e.getMessage().length()>400 ? e.getMessage().substring(0,400):e.getMessage()));
+        }
+
+    }
+
 
 }

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

@@ -1,5 +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;
 
@@ -16,4 +20,9 @@ public interface MESDataService {
 	List<Map<Object,Object>> makeBadReason(String accessKey, String requestId, String data);
 
 	List<Map<Object,Object>> packageDetail(String accessKey, String requestId, String data);
+
+	int saveFilePath(String accessKey, String requestId,String path, int size, String filename,String sncode) throws Exception;
+
+	ApiResult<String> uploadDCRFile(String accessKey, String requestId, MultipartFile file, String sncode) throws IOException;
+
 }

+ 51 - 9
src/main/java/com/uas/eis/serviceImpl/MESDataServiceImpl.java

@@ -2,25 +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.BaseUtil;
-import com.uas.eis.utils.Constant;
-import com.uas.eis.utils.DateUtil;
-import com.uas.eis.utils.SqlUtil;
+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 {
@@ -243,6 +242,49 @@ public class MESDataServiceImpl implements MESDataService {
 		return relist;
 	}
 
+	@Override
+	@Transactional
+	public int saveFilePath(String accessKey, String requestId,String path, int size, String filename,String sncode) throws Exception {
+		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,DF_RESULT)" +
+				" select DCRFILEDATA_seq.nextval,sysdate,?,?,?,? from dual ",accessKey,id,filename,sncode);
+		return id;
+	}
+
+	@Override
+	public ApiResult<String> uploadDCRFile(String accessKey, String requestId, MultipartFile file, String sncode) throws IOException {
+		try {
+			String filename = file.getOriginalFilename();
+			String path = saveFile(file);
+			int id = saveFilePath(accessKey, requestId,path, (int) file.getSize(), filename,sncode);
+			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 + "'");