You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
udi-wms-java/src/main/java/com/glxp/api/idc/controller/IdcController.java

203 lines
8.0 KiB
Java

package com.glxp.api.idc.controller;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartFile;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.dao.idc.DbDao;
import com.glxp.api.idc.service.IdcService;
import com.glxp.api.idc.utils.UriUtils;
import com.glxp.api.service.system.SystemParamConfigService;
import cn.hutool.core.util.StrUtil;
import lombok.extern.slf4j.Slf4j;
/**
* 中继服务接口
*/
@Slf4j
@RestController
public class IdcController {
@Resource
IdcService idcService;
@Resource
DbDao dbDao;
@Resource
UriUtils uriUtils;
/*通用上传接口*/
//@Log("中继服务数据接收,下级往上级上传")
@RequestMapping(value = "/spssync/common/upload")
public BaseResponse upload(HttpServletRequest request,
@RequestParam("content") String content,
@RequestParam(value = "files", required = false) MultipartFile[] files) {
//
return idcService.receive(request, content, files);
}
//@Log("数据同步测试")
@RequestMapping(value = "/spssync/common/test")
public BaseResponse test(HttpServletRequest request, @RequestBody Map<String, Object> params) {
//
return idcService.send(params);
}
//@Log("数据同步任务列表拉取")
@RequestMapping(value = "/spssync/common/list")
@ResponseBody
public BaseResponse list(HttpServletRequest request, @RequestBody(required = false) Map<String, Object> params) {
return idcService.taskList(request, params);
}
//@Log("数据同步任务根据任务ID下载数据")
@RequestMapping(value = "/spssync/common/download")
@ResponseBody
public BaseResponse download(HttpServletRequest request, @RequestBody Map<String, Object> params) {
return idcService.download(request, params);
}
@RequestMapping(value = "/spssync/common/uploadStatus")
@ResponseBody
public BaseResponse uploadStatus(HttpServletRequest request, @RequestBody Map<String, Object> params) {
return idcService.uploadStatus(request, params);
}
@RequestMapping(value = "/spssync/common/downloadStatus")
@ResponseBody
public BaseResponse downloadStatus(HttpServletRequest request, @RequestBody Map<String, Object> params) {
return idcService.downloadStatus(request, params);
}
//@Log("数据同步任务根据任务ID,返回下载成功标记")
@RequestMapping(value = "/spssync/common/success")
@ResponseBody
public BaseResponse success(HttpServletRequest request, @RequestBody Map<String, Object> params) {
return idcService.downlaodSuccess(request, params);
}
@RequestMapping(value = "/spssync/common/downloadFile")
public void downloadFile(HttpServletResponse response,@RequestParam String fileName) throws UnsupportedEncodingException {
if (fileName != null) {
response.setHeader("Content-disposition", "attachment; filename=" + URLEncoder.encode(fileName, "UTF-8"));
response.setContentType("application/force-download");
idcService.downloadFile(fileName, response);
}
}
@RequestMapping("/mapi/**")
public Object mapi(HttpServletRequest request, HttpServletResponse httpServletResponse) {
String uri = uriUtils.parseUri(request.getRequestURL().toString());
log.info(uri);
String isTopService = systemParamConfigService.selectValueByParamKey("is_top_service");
if (StrUtil.isNotEmpty(isTopService) && isTopService.equals("1")) {
uri = uri.replace("mapi/", "");
}
String upperServerHost = systemParamConfigService.selectValueByParamKey("upper_server_host");
if (StrUtil.isNotEmpty(upperServerHost)) {
uri = upperServerHost + "/" + uri;
}
log.info(uri);
if (uri.contains("getImage")) {
return redirectIamge(request, httpServletResponse, uri);
} else {
return redirect(request, uri);
}
}
private byte[] redirectIamge(HttpServletRequest request, HttpServletResponse httpServletResponse, String uri) {
RestTemplate restTemplate = new RestTemplate();
// HttpEntity<String> httpEntity = buildHeader(request);
log.info(request.getMethod());
Map<String, Object> headerParam = new HashMap<>();
Map<String, Object> bodyParam = new HashMap<String, Object>();
Enumeration pNames = request.getParameterNames();
String parm = "";
while (pNames.hasMoreElements()) {
String name = (String) pNames.nextElement();
String value = request.getParameter(name);
bodyParam.put(name, value);
parm = parm + name + "=" + value + "&";
}
uri = uri + "?" + parm.substring(0, parm.length() - 1);
HttpHeaders headers = new HttpHeaders();
Enumeration<String> enumeration = request.getHeaderNames();
while (enumeration.hasMoreElements()) {
String name = enumeration.nextElement();
String value = request.getHeader(name);
headerParam.put(name, value);
headers.add(name, value);
}
//headers.add("Content-Type", "application/json;charset=UTF-8");
HttpEntity<String> http = new HttpEntity<>(JSON.toJSONString(bodyParam), headers);
log.info(uri);
// ResponseEntity<Resource> entity = restTemplate.exchange(uri, HttpMethod.GET, httpEntity, Resource.class);
// ResponseEntity<Resource> responseEntity = restTemplate.exchange(uri,
// HttpMethod.GET, http, Resource.class, new Object[0]);
// ResponseEntity<HttpServletResponse> responseEntity = restTemplate.exchange(uri, HttpMethod.GET, http, HttpServletResponse.class);
ResponseEntity<byte[]> rsp = restTemplate.getForEntity(uri, byte[].class);
// String targetPath = "D:\\wmslog\\splash-down.png";
// try {
// Files.write(Paths.get(targetPath), Objects.requireNonNull(rsp.getBody(),
// "未获取到下载文件"));
// } catch (IOException e) {
// e.printStackTrace();
// }
return rsp.getBody();
}
@Resource
SystemParamConfigService systemParamConfigService;
private JSONObject redirect(HttpServletRequest request, String uri) {
RestTemplate restTemplate = new RestTemplate();
HttpEntity<String> httpEntity = uriUtils.buildHeader(request);
ResponseEntity<JSONObject> responseBody = null;
if (request.getMethod().equals("POST"))
responseBody = restTemplate.postForEntity(uri, httpEntity, JSONObject.class);
else if (request.getMethod().equals("GET")) {
responseBody = restTemplate.exchange(uri, HttpMethod.GET, httpEntity, JSONObject.class);
} else if (request.getMethod().equals("PUT")) {
responseBody = restTemplate.exchange(uri, HttpMethod.PUT, httpEntity, JSONObject.class);
} else if (request.getMethod().equals("DELETE")) {
responseBody = restTemplate.exchange(uri, HttpMethod.DELETE, httpEntity, JSONObject.class);
}
JSONObject result = responseBody.getBody();
return result;
}
}