package com.vincent.rsf.openApi.service.impl;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.cfg.CoercionAction;
|
import com.fasterxml.jackson.databind.cfg.CoercionInputShape;
|
import com.vincent.rsf.framework.exception.CoolException;
|
import com.vincent.rsf.openApi.config.PlatformProperties;
|
import com.vincent.rsf.openApi.entity.constant.WmsConstant;
|
import com.vincent.rsf.openApi.entity.dto.CommonResponse;
|
import com.vincent.rsf.openApi.entity.dto.OrderDto;
|
import com.vincent.rsf.openApi.entity.params.ErpOpParams;
|
import com.vincent.rsf.openApi.service.WmsErpService;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.http.HttpEntity;
|
import org.springframework.http.HttpHeaders;
|
import org.springframework.http.HttpMethod;
|
import org.springframework.http.ResponseEntity;
|
import org.springframework.stereotype.Service;
|
import org.springframework.web.client.RestTemplate;
|
|
import java.util.*;
|
|
@Slf4j
|
@Service("WmsErpService")
|
public class WmsErpServiceImpl implements WmsErpService {
|
|
@Autowired
|
private PlatformProperties.WmsApi wmsApi;
|
|
@Autowired
|
private RestTemplate restTemplate;
|
|
/**
|
* 获取订单明细
|
*
|
* @param params
|
* @return
|
*/
|
@Override
|
public CommonResponse getOrderInfo(ErpOpParams params) {
|
if (Objects.isNull(params.getOrderNo()) || params.getOrderNo().isEmpty()) {
|
throw new CoolException("订单号不能为空!!");
|
}
|
/**WMS基础配置链接*/
|
String rcsUrl = wmsApi.getHost() + ":" + wmsApi.getPort() + WmsConstant.QUERY_ORDER_AND_DETLS;
|
log.info("查询订单信息及状态: {}, 请求参数: {}", rcsUrl, JSONObject.toJSONString(params));
|
HttpHeaders headers = new HttpHeaders();
|
headers.add("Content-Type", "application/json");
|
headers.add("api-version", "v2.0");
|
HttpEntity httpEntity = new HttpEntity(params, headers);
|
ResponseEntity<String> exchange = restTemplate.exchange(rcsUrl, HttpMethod.POST, httpEntity, String.class);
|
log.info("查询响应结果: {}", exchange);
|
if (Objects.isNull(exchange.getBody())) {
|
throw new CoolException("查询失败!!");
|
} else {
|
ObjectMapper objectMapper = new ObjectMapper();
|
objectMapper.coercionConfigDefaults().setCoercion(CoercionInputShape.EmptyString, CoercionAction.AsEmpty);
|
try {
|
CommonResponse result = objectMapper.readValue(exchange.getBody(), CommonResponse.class);
|
if (result.getCode() == 200) {
|
JSONObject object = JSONObject.parseObject(JSONObject.toJSONString(result.getData()));
|
OrderDto dto = new OrderDto();
|
dto.setOrderNo(object.getString("code")).setAnfme(object.getDouble("anfme")).setType(object.getString("type")).setWkType(object.getString("wkType")).setQty(object.getDouble("qty")).setPoCode(object.getString("poCode")).setExceStatus(object.getShort("exceStatus")).setWorkQty(object.getDouble("workQty"));
|
result.setData(dto);
|
return result;
|
} else {
|
throw new CoolException("查询失败!!");
|
}
|
} catch (JsonProcessingException e) {
|
throw new CoolException(e.getMessage());
|
}
|
}
|
}
|
|
/**
|
* 订单修改
|
*
|
* @param params
|
* @return
|
*/
|
@Override
|
public CommonResponse updateOrderDetl(ErpOpParams params) {
|
if (Objects.isNull(params.getOrderNo()) || params.getOrderNo().isEmpty()) {
|
throw new CoolException("订单号不能为空!!");
|
}
|
/**WMS基础配置链接*/
|
String wmsUrl = wmsApi.getHost() + ":" + wmsApi.getPort() + WmsConstant.MODIFY_ORDER_DETLS;
|
log.info("修改订单信息及状态: {}, 请求参数: {}", wmsUrl, JSONObject.toJSONString(params));
|
HttpHeaders headers = new HttpHeaders();
|
headers.add("Content-Type", "application/json");
|
headers.add("api-version", "v2.0");
|
|
List<Map<String, Object>> maps = new ArrayList<>();
|
Map<String, Object> mapParams = new HashMap<>();
|
mapParams.put("orderNo", Arrays.asList(params.getOrderNo()));
|
mapParams.put("anfme", params.getAnfme());
|
mapParams.put("type", params.getType());
|
mapParams.put("wkType", params.getWkType());
|
mapParams.put("exceStatus", params.getExceStatus());
|
mapParams.put("orderItems", params.getOrderItems());
|
maps.add(mapParams);
|
|
HttpEntity httpEntity = new HttpEntity(maps, headers);
|
ResponseEntity<String> exchange = restTemplate.exchange(wmsUrl, HttpMethod.POST, httpEntity, String.class);
|
log.info("订单修改返回结果: {}", exchange);
|
if (Objects.isNull(exchange.getBody())) {
|
throw new CoolException("查询失败!!");
|
} else {
|
ObjectMapper objectMapper = new ObjectMapper();
|
objectMapper.coercionConfigDefaults().setCoercion(CoercionInputShape.EmptyString, CoercionAction.AsEmpty);
|
try {
|
CommonResponse result = objectMapper.readValue(exchange.getBody(), CommonResponse.class);
|
if (result.getCode() == 200) {
|
// JSONObject object = JSONObject.parseObject(JSONObject.toJSONString(result.getData()));
|
return result;
|
} else {
|
throw new CoolException("查询失败!!");
|
}
|
} catch (JsonProcessingException e) {
|
throw new CoolException(e.getMessage());
|
}
|
}
|
}
|
|
/**
|
* 删除单据
|
* @param params
|
* @return
|
*/
|
@Override
|
public CommonResponse orderDel(ErpOpParams params) {
|
if (Objects.isNull(params.getOrderNo()) || params.getOrderNo().isEmpty()) {
|
throw new CoolException("订单号不能为空!!");
|
}
|
/**WMS基础配置链接*/
|
String rcsUrl = wmsApi.getHost() + ":" + wmsApi.getPort() + WmsConstant.ORDER_DEL;
|
log.info("查询订单信息及状态: {}, 请求参数: {}", rcsUrl, JSONObject.toJSONString(params));
|
HttpHeaders headers = new HttpHeaders();
|
headers.add("Content-Type", "application/json");
|
headers.add("api-version", "v2.0");
|
HttpEntity httpEntity = new HttpEntity(params, headers);
|
ResponseEntity<String> exchange = restTemplate.exchange(rcsUrl, HttpMethod.POST, httpEntity, String.class);
|
log.info("查询响应结果: {}", exchange);
|
if (Objects.isNull(exchange.getBody())) {
|
throw new CoolException("查询失败!!");
|
} else {
|
ObjectMapper objectMapper = new ObjectMapper();
|
objectMapper.coercionConfigDefaults().setCoercion(CoercionInputShape.EmptyString, CoercionAction.AsEmpty);
|
try {
|
CommonResponse result = objectMapper.readValue(exchange.getBody(), CommonResponse.class);
|
if (result.getCode() == 200) {
|
return result;
|
} else {
|
throw new CoolException("查询失败!!");
|
}
|
} catch (JsonProcessingException e) {
|
throw new CoolException(e.getMessage());
|
}
|
}
|
}
|
|
}
|