Commit f205d79a zshaohui

南瑞增加获取工单接口

1 个父辈 30c5df55
......@@ -476,6 +476,44 @@ public class HttpHelper {
}
}
public static String postParam(String url, Map<String, Object> paramMap, Map<String,String> headerMap) throws ApiException {
// 设置请求参数
CloseableHttpClient httpClient = null;
CloseableHttpResponse response = null;
try {
List<NameValuePair> params = toNameValuePair(paramMap);
URI uri = new URIBuilder(url).setParameters(params).build();
log.info("执行请求:" + uri.toString());
HttpPost httpPost = new HttpPost(uri);
for (Entry<String, String> entry : headerMap.entrySet()) {
httpPost.addHeader(entry.getKey(), entry.getValue());
}
// httpPost.setEntity(new UrlEncodedFormEntity(params, CONTENT_CHARSET));
httpClient = HttpClients.createDefault();
response = httpClient.execute(httpPost);
HttpEntity entity = response.getEntity();
String responseContent = EntityUtils.toString(entity, CONTENT_CHARSET);
//response.close();
//httpClient.close();
return responseContent;
} catch (Exception e) {
throw new ApiException("Request params to [" + url + "] failed:" + e.getMessage());
}finally {
try {
if (response != null) {
response.close();
}
if (httpClient != null) {
httpClient.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
private static String appendString(String url, String paramStr) {
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append(url);
......
package com.neotel.smfcore.custom.nanrui;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.neotel.smfcore.common.exception.ApiException;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.HttpHelper;
import com.neotel.smfcore.common.utils.JsonUtil;
import com.neotel.smfcore.core.api.bean.ApiResult;
import com.neotel.smfcore.core.api.listener.BaseSmfApiListener;
import com.neotel.smfcore.core.inList.service.po.InList;
import com.neotel.smfcore.core.inList.service.po.InListItem;
import com.neotel.smfcore.core.order.LiteOrderCache;
import com.neotel.smfcore.core.order.service.manager.ILiteOrderManager;
import com.neotel.smfcore.core.order.service.po.LiteOrder;
import com.neotel.smfcore.core.order.service.po.LiteOrderItem;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.net.URL;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Slf4j
@Service
public class NanRuiApi extends BaseSmfApiListener {
@Autowired
private LiteOrderCache liteOrderCache;
@Autowired
private ILiteOrderManager liteOrderManager;
@Override
public boolean isForThisApi(String apiName) {
return "nanrui".equals(apiName);
}
@Override
public LiteOrder fetchOrder(String fetchOrderUrl, String orderNumber, String username) {
//String url, Map<String, Object> paramMap, Map<String,String> headerMap
LiteOrder liteOrder = liteOrderCache.getLiteOrder(orderNumber);
if (liteOrder != null){
throw new ValidateException("smfcore.valueAlreadyExist","{0}[{1}]已存在",new String[]{"orderNumber",orderNumber});
}
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("api", NanRuiConfig.api);
paramMap.put("format", NanRuiConfig.format);
Map<String, String> dataParamMap = new HashMap<>();
dataParamMap.put("number", orderNumber);
String dataStr = JSON.toJSONString(dataParamMap);
//dataStr = URLEncoder.encode(dataStr);
paramMap.put("data", dataStr);
Map<String, String> headerMap = new HashMap<>();
headerMap.put("X-DB", NanRuiConfig.X_DB_TEST);
headerMap.put("Content-Type", NanRuiConfig.contentType);
try {
String resultStr = HttpHelper.postParam(fetchOrderUrl, paramMap, headerMap);
log.info(orderNumber + "fetchOrder结果为:" + resultStr);
ApiResult apiResult = JsonUtil.toObj(resultStr, ApiResult.class);
if (apiResult.isOk()) {
List<LiteOrderItem> orderItemList = new ArrayList<>();
Map<String, Object> dataMap = (Map<String, Object>) apiResult.getData();
List<Map<String, Object>> itemList = (List<Map<String, Object>>) dataMap.get("items");
for (Map<String, Object> itemMap : itemList) {
String partNum = itemMap.get("partNum").toString();
Object qtyStr = itemMap.get("qty");
Object reelCountStr = itemMap.get("reelCount");
LiteOrderItem orderItem = new LiteOrderItem();
orderItem.setPn(partNum);
if (qtyStr != null && !qtyStr.toString().isEmpty()) {
orderItem.setNeedNum(Integer.valueOf(qtyStr.toString()));
}
if (reelCountStr != null && !qtyStr.toString().isEmpty()) {
orderItem.setNeedReelCount(Integer.valueOf(reelCountStr.toString()));
}
orderItemList.add(orderItem);
}
LiteOrder order = new LiteOrder();
order.setOrderNo(orderNumber);
order.setOrderItems(orderItemList);
log.info("获取到工单单:" + orderNumber + ",共" + orderItemList.size() + "条工单详情");
liteOrderManager.createWithItems(order);
liteOrderCache.addOrderToMap(order);
return order;
} else {
throw new ValidateException("smfcore.fetchOrder.ng", "获取工单失败,MES返回ng:" + apiResult.getMsg());
}
} catch (Exception e) {
throw new ValidateException("smfcore.fetchOrder.ng", "获取工单失败:" + e.getMessage());
}
}
}
package com.neotel.smfcore.custom.nanrui;
public class NanRuiConfig {
public static final String X_DB_TEST ="nari-wms-test";
public static final String X_DB_PROD ="nari-wms-prod";
public static final String contentType ="application/x-www-form-urlencoded";
public static final String api = "wms.task.replenishment";
public static final String format = "json";
}
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!