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<String,Object> 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()); 
 | 
        } 
 | 
    } 
 | 
  
 | 
} 
 |