1
This commit is contained in:
parent
62d5f56b8e
commit
db2ccb8c3b
@ -2,20 +2,19 @@ package com.gatedge.jindie.controller;
|
||||
|
||||
import com.gatedge.jindie.entity.Entity;
|
||||
import com.gatedge.jindie.entity.EntityItem;
|
||||
import com.gatedge.jindie.entity.EntityVO;
|
||||
import com.gatedge.jindie.result.ActionResult;
|
||||
import com.gatedge.jindie.result.ListResult;
|
||||
import com.gatedge.jindie.result.ResponseBodyMessage;
|
||||
import com.gatedge.jindie.result.ResultBuilder;
|
||||
import com.gatedge.jindie.service.SealedQuotationService;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import sun.misc.BASE64Encoder;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Base64;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@ -31,6 +30,7 @@ import java.util.Map;
|
||||
@RequestMapping("/admin/")
|
||||
public class SealedQuotationController {
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(SealedQuotationController.class);
|
||||
@Autowired
|
||||
private SealedQuotationService sealedQuotationService;
|
||||
|
||||
@ -47,7 +47,6 @@ public class SealedQuotationController {
|
||||
@PostMapping("queryData")
|
||||
public ListResult queryData(@RequestBody Map<String, String> map) {
|
||||
String FBILLNO = map.get("FBILLNO");
|
||||
UploadFbillNo = map.get("UploadFbillNo");
|
||||
List<Entity> data = null;
|
||||
if (sealedQuotationService.loginChack(map)) {
|
||||
data= sealedQuotationService.queryData(FBILLNO);
|
||||
@ -58,7 +57,6 @@ public class SealedQuotationController {
|
||||
@PostMapping("queryDataItem")
|
||||
public ListResult queryDataItem(@RequestBody Map<String, String> map) {
|
||||
String FBILLNO = map.get("FBILLNO");
|
||||
UploadFbillNo = map.get("UploadFbillNo");
|
||||
List<EntityItem> data = null;
|
||||
if (sealedQuotationService.loginChack(map)) {
|
||||
data= sealedQuotationService.queryDataItem(FBILLNO);
|
||||
@ -73,18 +71,31 @@ public class SealedQuotationController {
|
||||
}
|
||||
|
||||
@PostMapping("/upload")
|
||||
public ResponseBodyMessage upload(@RequestParam("file") MultipartFile file) throws IOException {
|
||||
if (!file.isEmpty()) {
|
||||
//获取上传文件文件名
|
||||
String fileName = file.getOriginalFilename();
|
||||
//获取上传文件的Base64
|
||||
BASE64Encoder base64Encoder =new BASE64Encoder();
|
||||
String fileBase64 = base64Encoder.encode(file.getBytes());
|
||||
String FIDrestful = sealedQuotationService.InterId(UploadFbillNo);
|
||||
responseBodyMessage = sealedQuotationService.uploadFile(FIDrestful,fileName,fileBase64,UploadFbillNo);
|
||||
System.out.println("解析JSON数据:"+ responseBodyMessage.getMessage());
|
||||
return responseBodyMessage;
|
||||
}
|
||||
return new ResponseBodyMessage(0,"未选择文件,附近上传失败");
|
||||
public ResponseBodyMessage upload(@RequestParam("file") MultipartFile file,
|
||||
@RequestParam("FBILLNO1") String Fbillno) throws IOException {
|
||||
// 获取文件名
|
||||
String fileName = file.getOriginalFilename();
|
||||
// 获取文件内容并转换为 Base64 编码
|
||||
String fileBase64 = Base64.getEncoder().encodeToString(file.getBytes());
|
||||
|
||||
System.out.println("文件名为:" + fileName);
|
||||
System.out.println("文件抓取BASE64值:" + fileBase64);
|
||||
System.out.println("单据编号 :" + Fbillno);
|
||||
|
||||
// 调用服务层方法处理文件上传逻辑
|
||||
String FIDrestful = sealedQuotationService.InterId(Fbillno);
|
||||
System.out.println("文件获取FID值:" + FIDrestful);
|
||||
|
||||
// 调用服务层方法上传文件
|
||||
ResponseBodyMessage responseBodyMessage = sealedQuotationService.uploadFile(FIDrestful, fileName, fileBase64, Fbillno);
|
||||
System.out.println("解析JSON数据:" + responseBodyMessage.getMessage());
|
||||
|
||||
return responseBodyMessage;
|
||||
}
|
||||
@GetMapping("/CreateFile")
|
||||
public ListResult CreateFile(@RequestParam String Fbillno) {
|
||||
List<EntityItem> data = null;
|
||||
|
||||
return ResultBuilder.buildEntitySuccess(data);
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,61 @@
|
||||
package com.gatedge.jindie.entity;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
/**
|
||||
* @author ligoudan
|
||||
* @create 2025-04-09 19:08
|
||||
* 相应JSON的反应实体类
|
||||
*/
|
||||
public class FileEntityItem {
|
||||
@JsonProperty("FATTACHMENTNAME")
|
||||
private String FATTACHMENTNAME;//文件名
|
||||
|
||||
@JsonProperty("FATTACHMENTSIZE")
|
||||
private String FATTACHMENTSIZE;//文件大小
|
||||
|
||||
@JsonProperty("FCREATETIME")
|
||||
private String FCREATETIME;
|
||||
|
||||
@JsonProperty("FID")
|
||||
private String FID;
|
||||
|
||||
public FileEntityItem(String FATTACHMENTNAME, String FATTACHMENTSIZE, String FCREATETIME, String FID) {
|
||||
this.FATTACHMENTNAME = FATTACHMENTNAME;
|
||||
this.FATTACHMENTSIZE = FATTACHMENTSIZE;
|
||||
this.FCREATETIME = FCREATETIME;
|
||||
this.FID = FID;
|
||||
}
|
||||
|
||||
public String getFATTACHMENTNAME() {
|
||||
return FATTACHMENTNAME;
|
||||
}
|
||||
|
||||
public void setFATTACHMENTNAME(String FATTACHMENTNAME) {
|
||||
this.FATTACHMENTNAME = FATTACHMENTNAME;
|
||||
}
|
||||
|
||||
public String getFATTACHMENTSIZE() {
|
||||
return FATTACHMENTSIZE;
|
||||
}
|
||||
|
||||
public void setFATTACHMENTSIZE(String FATTACHMENTSIZE) {
|
||||
this.FATTACHMENTSIZE = FATTACHMENTSIZE;
|
||||
}
|
||||
|
||||
public String getFCREATETIME() {
|
||||
return FCREATETIME;
|
||||
}
|
||||
|
||||
public void setFCREATETIME(String FCREATETIME) {
|
||||
this.FCREATETIME = FCREATETIME;
|
||||
}
|
||||
|
||||
public String getFID() {
|
||||
return FID;
|
||||
}
|
||||
|
||||
public void setFID(String FID) {
|
||||
this.FID = FID;
|
||||
}
|
||||
}
|
@ -3,6 +3,7 @@ package com.gatedge.jindie.service;
|
||||
import com.gatedge.jindie.entity.Entity;
|
||||
import com.gatedge.jindie.entity.EntityItem;
|
||||
import com.gatedge.jindie.entity.EntityVO;
|
||||
import com.gatedge.jindie.entity.FileEntityItem;
|
||||
import com.gatedge.jindie.result.ResponseBodyMessage;
|
||||
|
||||
import java.util.List;
|
||||
@ -56,4 +57,7 @@ public interface SealedQuotationService {
|
||||
|
||||
//根据获取到的单据内码FID,对单据进行附件上传
|
||||
ResponseBodyMessage uploadFile(String FID, String fileName, String fileBase64, String FBillNo);
|
||||
|
||||
//根据单据编号,查询已经上传的附件
|
||||
List<FileEntityItem> queryFiles(String FBillNo);
|
||||
}
|
||||
|
@ -9,10 +9,12 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.gatedge.jindie.entity.Entity;
|
||||
import com.gatedge.jindie.entity.EntityItem;
|
||||
import com.gatedge.jindie.entity.EntityVO;
|
||||
import com.gatedge.jindie.entity.FileEntityItem;
|
||||
import com.gatedge.jindie.result.ResponseBodyMessage;
|
||||
import com.gatedge.jindie.service.SealedQuotationService;
|
||||
|
||||
import com.jayway.jsonpath.JsonPath;
|
||||
import javafx.collections.ObservableArray;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpEntity;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
@ -22,6 +24,8 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.*;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
@ -48,10 +52,14 @@ public class SealedQuotationServiceImpl implements SealedQuotationService {
|
||||
|
||||
private String QUERY_DATA_URL="http://192.168.61.20:18081/K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.ExecuteBillQuery.common.kdsvc";
|
||||
private String SAVA_DATA_URL="http://192.168.61.20:18081/k3cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save.common.kdsvc";
|
||||
//上传文件的Url
|
||||
private String UploadFile = "http://192.168.10.105/K3Cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.AttachmentUpLoad.common.kdsvc";
|
||||
|
||||
private String UploadFile = "http://192.168.61.20:18081/K3Cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save.common.kdsvc";
|
||||
//查询单据FID的Url
|
||||
private String QueryInterId = "http://192.168.10.105/K3Cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.ExecuteBillQuery.common.kdsvc";
|
||||
private String QueryInterId = "http://192.168.61.20:18081/K3Cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.ExecuteBillQuery.common.kdsvc";
|
||||
//查询单据上传附件
|
||||
private String QueryFilesUrl = "http://192.168.61.20:18081/K3Cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.ExecuteBillQuery.common.kdsvc";
|
||||
//查询单据上传附件的主键
|
||||
private String QueryFiles = "FID,FATTACHMENTNAME,FATTACHMENTSIZE,FCREATETIME";
|
||||
|
||||
@Override
|
||||
public void login(String FBILLNO, String username, String password) {
|
||||
@ -161,7 +169,6 @@ public class SealedQuotationServiceImpl implements SealedQuotationService {
|
||||
entityItem.setFSEQ(String.valueOf(FSEQ));
|
||||
FSEQ++;
|
||||
result.add(entityItem);
|
||||
|
||||
}
|
||||
} else {
|
||||
System.err.println("Invalid JSON array format.");
|
||||
@ -343,19 +350,48 @@ public class SealedQuotationServiceImpl implements SealedQuotationService {
|
||||
|
||||
@Override
|
||||
public ResponseBodyMessage uploadFile(String FID, String fileName, String fileBase64, String FBillNo) {
|
||||
Map<String,Object> data = new HashMap<>();
|
||||
Map<String,Object> params = new HashMap<>();
|
||||
params.put("FileName",fileName);
|
||||
params.put("FormId","kafe2f22a0498441f9109c31cf5586da5");
|
||||
params.put("IsLast",true);
|
||||
params.put("InterId",FID);
|
||||
params.put("BillNO",FBillNo);
|
||||
params.put("SendByte",fileBase64);
|
||||
data.put("data",params);
|
||||
// 创建最外层的Map
|
||||
Map<String, Object> rootMap = new HashMap<>();
|
||||
// 创建内部的data Map
|
||||
Map<String, Object> dataMap = new HashMap<>();
|
||||
// 创建Model Map
|
||||
Map<String, Object> modelMap = new HashMap<>();
|
||||
// 创建FCreateMen Map
|
||||
Map<String, Object> createMenMap = new HashMap<>();
|
||||
//获取文件后缀名
|
||||
String extension = getFileExtensionWithDot(fileName);
|
||||
//获取当前时间
|
||||
LocalDateTime currentDateTime = LocalDateTime.now();
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
||||
String formattedDateTime = currentDateTime.format(formatter);
|
||||
|
||||
|
||||
createMenMap.put("FUserID", "100746");
|
||||
|
||||
// 填充Model Map
|
||||
modelMap.put("FAttachmentName", fileName);//文件名
|
||||
modelMap.put("FBillType", "kafe2f22a0498441f9109c31cf5586da5");//单据类型
|
||||
modelMap.put("FInterID", FID);//单据FID
|
||||
modelMap.put("FBillNo", FBillNo);//单据编号
|
||||
modelMap.put("FAttachment", fileBase64);//文件BASE64
|
||||
modelMap.put("FFILESTORAGE", 0);
|
||||
modelMap.put("FExtName", extension);
|
||||
modelMap.put("FEntryinterId", "-1");//单据头附件
|
||||
modelMap.put("FEntrykey", " ");//单据头附近,要传一个空格
|
||||
modelMap.put("FaliasFileName", fileName);
|
||||
modelMap.put("FCreateMen", createMenMap);
|
||||
modelMap.put("FCreateTime",formattedDateTime);
|
||||
|
||||
// 填充data Map
|
||||
dataMap.put("Model", modelMap);
|
||||
|
||||
// 填充最外层的Map
|
||||
rootMap.put("FormId", "BOS_Attachment");
|
||||
rootMap.put("data", dataMap);
|
||||
String api = loginAPI(null);
|
||||
loginAPI(api);
|
||||
String Json =API(api,data,UploadFile);
|
||||
System.out.println(Json);
|
||||
String Json =API(api,rootMap,UploadFile);
|
||||
System.out.println("22上传的:"+Json);
|
||||
Boolean Success = JsonPath.read(Json,"$.Result.ResponseStatus.IsSuccess");
|
||||
if(Success){
|
||||
return new ResponseBodyMessage(1,"附件上传成功");
|
||||
@ -364,4 +400,65 @@ public class SealedQuotationServiceImpl implements SealedQuotationService {
|
||||
return new ResponseBodyMessage(0,"附件上传失败,失败原因:"+message);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<FileEntityItem> queryFiles(String FBillNo) {
|
||||
Map<String, Object> data = new HashMap<>();
|
||||
Map<String, Object> params = new HashMap<>();
|
||||
params.put("FormId","BOS_Attachment");
|
||||
params.put("FieldKeys",QueryFiles);
|
||||
params.put("FilterString", "FBILLNO like'%" + FBillNo + "'");
|
||||
params.put("OrderString", "");
|
||||
params.put("TopRowCount", "0");
|
||||
params.put("StartRow", "0");
|
||||
params.put("Limit", "100");
|
||||
String api = loginAPI(null);
|
||||
loginAPI(api);
|
||||
String json = API(api,data,QueryFilesUrl);
|
||||
List<FileEntityItem> result = new ArrayList<>();
|
||||
if (json != null) {
|
||||
//可能返回的是个集合,需要处理一下
|
||||
try {
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
JsonNode jsonArray = objectMapper.readTree(json);
|
||||
if (jsonArray.isArray()) {
|
||||
int FSEQ=1;
|
||||
for (JsonNode jsonItem : jsonArray) {
|
||||
String input = jsonItem.toString();
|
||||
input = input.substring(1, input.length() - 1); // 截取字符串,去掉 "[[" 和 "]]"
|
||||
String[] parts = input.split(",");
|
||||
List<String> list = new ArrayList<>();
|
||||
for (String part : parts) {
|
||||
String cleanedPart = part.replaceAll("[\"\\s+]", ""); // 去掉多余的双引号和空格
|
||||
list.add(cleanedPart);
|
||||
}
|
||||
FileEntityItem entityItem = new FileEntityItem(list.get(3),list.get(2),list.get(1),list.get(0));
|
||||
//entityItem.setFSEQ(String.valueOf(FSEQ));
|
||||
FSEQ++;
|
||||
result.add(entityItem);
|
||||
}
|
||||
} else {
|
||||
System.err.println("Invalid JSON array format.");
|
||||
}
|
||||
} catch (JsonProcessingException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取文件后缀名的方法
|
||||
* @param fileName 文件名
|
||||
* @return 文件后缀名,如果没有后缀名返回 null
|
||||
*/
|
||||
public static String getFileExtensionWithDot(String fileName) {
|
||||
int dotIndex = fileName.lastIndexOf(".");
|
||||
if (dotIndex != -1 && dotIndex != 0) {
|
||||
return fileName.substring(dotIndex);
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user