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 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> maps = new ArrayList<>(); Map 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 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 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()); } } } }