Commit 130d4942 by 张洪涛

改进批量推单的接口

parent 552d384a
...@@ -130,6 +130,13 @@ ...@@ -130,6 +130,13 @@
<artifactId>commons-beanutils</artifactId> <artifactId>commons-beanutils</artifactId>
<version>1.7.0</version> <version>1.7.0</version>
</dependency> </dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
...@@ -18,22 +18,28 @@ import com.freemud.Constant.ResponseCode; ...@@ -18,22 +18,28 @@ import com.freemud.Constant.ResponseCode;
import com.freemud.Mapper.OrderProductMapper; import com.freemud.Mapper.OrderProductMapper;
import com.freemud.Service.OrdersService; import com.freemud.Service.OrdersService;
import com.freemud.dto.BaseResponse; import com.freemud.dto.BaseResponse;
import com.freemud.dto.OrderInfo;
import com.freemud.dto.OrderProductDTO; import com.freemud.dto.OrderProductDTO;
import com.freemud.utils.ExcelOperationUtils; import com.freemud.utils.ExcelOperationUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FileUtils;
import org.apache.tomcat.util.http.fileupload.disk.DiskFileItem;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.FileSystemResource; import org.springframework.core.io.FileSystemResource;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap; import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestClientException; import org.springframework.web.client.RestClientException;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import java.io.File; import java.io.File;
import java.util.ArrayList; import java.io.IOException;
import java.util.List; import java.util.*;
@Service @Service
@Slf4j @Slf4j
...@@ -101,52 +107,109 @@ public class OrdersServiceImpl implements OrdersService { ...@@ -101,52 +107,109 @@ public class OrdersServiceImpl implements OrdersService {
@Override @Override
public BaseResponse batchPush(MultipartFile file, String batchNumber) { public BaseResponse batchPush(MultipartFile file, String batchNumber) {
log.info("请求参数:batchNumber------------------>{}", batchNumber); log.info("请求参数:batchNumber:{}, Excel:{}", batchNumber, file.getOriginalFilename());
//导入Excel文件 //导入Excel文件
BaseResponse importResult = remoteRequest(batchNumber, "import", file); BaseResponse importResult = remoteRequest(batchNumber, "import", file);
log.info("导入Excel结果----------------->{}", JSON.toJSONString(importResult)); log.info("导入Excel结果:{}", JSON.toJSONString(importResult));
if (importResult.getCode().equals(ResponseCode.RESPONSE_CODE_100)){
//推单过程
BaseResponse getOrderHandleResult = new BaseResponse();
if (importResult.getCode().equals(ResponseCode.RESPONSE_CODE_100.getCode())){
//处理对账的状态(初始化) //处理对账的状态(初始化)
BaseResponse handleOrderExStatusResult = remoteRequest(batchNumber, "handleOrderExStatus", null); BaseResponse handleOrderExStatusResult = remoteRequest(batchNumber, "handleOrderExStatus");
log.info("》》》》》》》》》》》》》》》》处理对账的状态:{}", handleOrderExStatusResult); log.info("处理对账的状态:{}", handleOrderExStatusResult);
if (handleOrderExStatusResult.getCode().equals(ResponseCode.RESPONSE_CODE_100)){ if (handleOrderExStatusResult.getCode().equals(ResponseCode.RESPONSE_CODE_100.getCode())){
//推送订单 //推送订单
BaseResponse pushOrderResult = remoteRequest(batchNumber, "pushOrder", null); BaseResponse pushOrderResult = remoteRequest(batchNumber, "pushOrder", null);
log.info("》》》》》》》》》》》》》》》》推送订单的结果:{}", pushOrderResult); log.info("推送订单的结果:{}", pushOrderResult);
if (pushOrderResult.getCode().equals(ResponseCode.RESPONSE_CODE_100)){ if (pushOrderResult.getCode().equals(ResponseCode.RESPONSE_CODE_100.getCode())){
//获取订单的处理结果 //获取订单的处理结果
BaseResponse getOrderHandleResult = remoteRequest(batchNumber, "getOrderHandleResult", null); getOrderHandleResult = remoteRequest(batchNumber, "getOrderHandleResult", null);
log.info("》》》》》》》》》》》》》》》》获取订单的处理结果:{}", getOrderHandleResult); log.info("获取订单的处理结果:{}", getOrderHandleResult);
return getOrderHandleResult; }
}
}
//检验过程
if (getOrderHandleResult.getCode().equals(ResponseCode.RESPONSE_CODE_100.getCode())){
List<LinkedHashMap> orderInfos = (List<LinkedHashMap>)getOrderHandleResult.getResult();
List<OrderInfo> orderInfoList = new ArrayList<>();
orderInfos.stream().forEach(
linkedHashMap -> {
OrderInfo orderInfo = new OrderInfo();
orderInfo.setOrderId(linkedHashMap.get("orderId").toString());
orderInfo.setPushResult(linkedHashMap.get("pushResult").toString());
orderInfo.setResponseData(linkedHashMap.get("responseData").toString());
orderInfoList.add(orderInfo);
} }
);
} }
return getOrderHandleResult;
} }
return new BaseResponse(ResponseCode.RESPONSE_CODE_102.getCode(),ResponseCode.RESPONSE_CODE_102.getMsg(),"1","推送失败,批次号不能重复"); }
/** /**
* 处理对账的状态(初始化) * 请求远程接口
* @param batchNumber * @param batchNumber
* @return * @return
*/ */
private BaseResponse remoteRequest(String batchNumber, String urll, MultipartFile file) { private BaseResponse remoteRequest(String batchNumber, String urll, MultipartFile multipartFile) {
String url = RequestUrl + "/orderEx/" + urll; String url = RequestUrl + "/orderEx/" + urll;
log.info("请求的Url:{}", url);
MultiValueMap<String, Object> param = new LinkedMultiValueMap<>(); MultiValueMap<String, Object> param = new LinkedMultiValueMap<>();
if (file != null){ if (multipartFile != null){
param.add("file", file); //multipartFile-->Filr-->FileSystemResource
File file = new File(FileDir);
try {
FileUtils.copyInputStreamToFile(multipartFile.getInputStream(), file);
FileSystemResource tempFile = new FileSystemResource(file);
param.add("file", tempFile);
} catch (IOException e) {
log.error("文件操作出错:{}",e.getMessage());
return new BaseResponse(ResponseCode.RESPONSE_CODE_102.getCode(),ResponseCode.RESPONSE_CODE_102.getMsg(),"1","文件操作出错");
}
} }
param.add("batchNumber", batchNumber); param.add("batchNumber", batchNumber);
log.info("{}接口请求参数》》》》》》》》{}", urll, param); log.info("{}接口请求参数{}", urll, param);
BaseResponse importResult = new BaseResponse(); BaseResponse importResult = new BaseResponse();
try { try {
importResult.setCode("100");
importResult = restTemplate.postForObject(url, param, BaseResponse.class); importResult = restTemplate.postForObject(url, param, BaseResponse.class);
} catch (Exception e) { } catch (Exception e) {
log.error("调用{}接口出错》》》》》》》》》》{}",urll,e.fillInStackTrace()); log.error("调用{}接口出错{}",urll,e.fillInStackTrace());
importResult = new BaseResponse(ResponseCode.RESPONSE_CODE_102.getCode(),ResponseCode.RESPONSE_CODE_102.getMsg(),"1","调用"+urll+"接口出错"); importResult = new BaseResponse(ResponseCode.RESPONSE_CODE_102.getCode(),ResponseCode.RESPONSE_CODE_102.getMsg(),"1","调用"+urll+"接口出错");
} }
return importResult; return importResult;
} }
private BaseResponse remoteRequest(String batchNumber, String urll) {
HttpHeaders headers = new HttpHeaders();
headers.add("Accept", "application/json");
headers.add("Content-Type", "application/json;charset=UTF-8");
headers.add("Content-Encoding", "UTF-8");
String url = RequestUrl + "/orderEx/" + urll;
log.info("请求的Url:{}", url);
//组装请求参数
Map<String, String> param = new HashMap<>();
param.put("batchNumber", batchNumber);
log.info("{}接口请求参数:{}", urll, param);
String dataStr = JSON.toJSONString(param);
log.info("转化后的请求参数:{}", dataStr);
HttpEntity<String> httpEntity = new HttpEntity<>(dataStr, headers);
BaseResponse importResult = new BaseResponse();
try {
importResult = restTemplate.postForObject(url, httpEntity, BaseResponse.class);
} catch (Exception e) {
log.error("调用{}接口出错:{}",urll,e.fillInStackTrace());
importResult = new BaseResponse(ResponseCode.RESPONSE_CODE_102.getCode(),ResponseCode.RESPONSE_CODE_102.getMsg(),"1","调用"+urll+"接口出错");
}
return importResult;
}
......
...@@ -18,7 +18,7 @@ spring.datasource.druid.testOnBorrow=true ...@@ -18,7 +18,7 @@ spring.datasource.druid.testOnBorrow=true
mybatis.mapper-locations=classpath:Mapper/*.xml mybatis.mapper-locations=classpath:Mapper/*.xml
order.RequestUrl=http://172.16.15.179:3017 order.RequestUrl=http://127.0.0.1:8080
order.FileDir=D://test.xls order.FileDir=D://test.xls
order.returnCode=100 order.returnCode=100
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment