package com.ruoyi.common.utils.api; import cn.hutool.http.HttpRequest; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.util.HashMap; import java.util.Map; import java.util.Objects; @Slf4j @Component public class MesApiUtils { @Value("${mes.ztzb.ip}") String ip; @Value("${mes.ztzb.user}") String user; @Value("${mes.ztzb.password}") String password; /** * 获取token请求链接 * @return */ private String getAuthTokenUrl() { return ip + "/auth/oauth/token?randomStr=blockPuzzle&grant_type=password"; } /** * 新增实时库存请求链接 * @return */ private String getBatchAddStockUrl(){ return ip + "/mes/stock/batchAddStock"; } /** * 获取mes系统token * @return 接口响应结果 */ public String getToken(){ try{ Map bodyMap = new HashMap<>(); bodyMap.put("username",user); String bodyStr = "username="+user+"&password="+password; String response = HttpRequest.post(getAuthTokenUrl()) .header("Authorization", "Basic cGlnOnBpZw==") .header("Content-Type", "application/x-www-form-urlencoded") .body(bodyStr,"application/x-www-form-urlencoded").execute().body(); JSONObject responseObj = JSONUtil.parseObj(response); if(Objects.nonNull(responseObj.getStr("access_token"))){ return "Bearer " + responseObj.getStr("access_token"); }else{ throw new RuntimeException(responseObj.getStr("msg")); } }catch (Exception e){ e.printStackTrace(); throw new RuntimeException("获取MES系统token接口异常:"+e.getMessage()); } } /** * mes新增实时库存接口 * @param requestJsonStr 请求参数json字符串 * @return 接口响应结果 */ public boolean batchAddStock(String requestJsonStr){ try{ String response = HttpRequest.post(getBatchAddStockUrl()) .header("Authorization", getToken()) .header("Content-Type", "application/json") .body(requestJsonStr) .execute() .body(); JSONObject entries = JSONUtil.parseObj(response); if(entries.getInt("code")==0){ return true; }else{ throw new RuntimeException("同步到MES失败:"+entries.getStr("msg")); } }catch (Exception e){ e.printStackTrace(); throw new RuntimeException("同步MES实时库存接口异常:"+e.getMessage()); } } }