| | |
| | | import cn.hutool.http.HttpRequest; |
| | | import cn.hutool.json.JSONObject; |
| | | import cn.hutool.json.JSONUtil; |
| | | import com.ruoyi.common.config.mes.MesConfig; |
| | | import com.ruoyi.common.config.mes.MesProperties; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | |
| | | @Component |
| | | public class MesApiUtils { |
| | | |
| | | @Value("${mes.ztns.ip}") |
| | | String ip; |
| | | @Autowired |
| | | private MesConfig mesConfig; |
| | | |
| | | @Value("${mes.ztns.user}") |
| | | String user; |
| | | |
| | | @Value("${mes.ztns.password}") |
| | | String password; |
| | | /** |
| | | * 根据工厂域回去mes配置 |
| | | * @param contract |
| | | * @return |
| | | */ |
| | | public MesProperties getMesPropertiesByContract(String contract){ |
| | | return mesConfig.getProps().stream().filter(f-> org.apache.commons.lang3.StringUtils.equals(f.getContract(),contract)).findFirst().orElse(new MesProperties()); |
| | | } |
| | | |
| | | /** |
| | | * 获取token请求链接 |
| | | * @return |
| | | */ |
| | | private String getAuthTokenUrl() { |
| | | private String getAuthTokenUrl(String ip) { |
| | | return ip + "/auth/oauth/token?randomStr=blockPuzzle&grant_type=password"; |
| | | } |
| | | |
| | |
| | | * 新增实时库存请求链接 |
| | | * @return |
| | | */ |
| | | private String getBatchAddStockUrl(){ |
| | | private String getBatchAddStockUrl(String ip){ |
| | | return ip + "/mes/stock/batchAddStock"; |
| | | } |
| | | |
| | |
| | | * 获取mes系统token |
| | | * @return 接口响应结果 |
| | | */ |
| | | public String getToken(){ |
| | | public String getToken(MesProperties mesProperties){ |
| | | try{ |
| | | Map<String,Object> bodyMap = new HashMap<>(); |
| | | bodyMap.put("username",user); |
| | | String bodyStr = "username="+user+"&password="+password; |
| | | String response = HttpRequest.post(getAuthTokenUrl()) |
| | | bodyMap.put("username",mesProperties.getUser()); |
| | | String bodyStr = "username="+mesProperties.getUser()+"&password="+mesProperties.getPassword(); |
| | | String response = HttpRequest.post(getAuthTokenUrl(mesProperties.getIp())) |
| | | .header("Authorization", "Basic cGlnOnBpZw==") |
| | | .header("Content-Type", "application/x-www-form-urlencoded") |
| | | .body(bodyStr,"application/x-www-form-urlencoded").execute().body(); |
| | |
| | | |
| | | /** |
| | | * mes新增实时库存接口 |
| | | * @param contract 工厂域 |
| | | * @param requestJsonStr 请求参数json字符串 |
| | | * @return 接口响应结果 |
| | | */ |
| | | public boolean batchAddStock(String requestJsonStr){ |
| | | public boolean batchAddStock(String contract,String requestJsonStr){ |
| | | try{ |
| | | String response = HttpRequest.post(getBatchAddStockUrl()) |
| | | .header("Authorization", getToken()) |
| | | MesProperties mesProperties = getMesPropertiesByContract(contract); |
| | | String response = HttpRequest.post(getBatchAddStockUrl(mesProperties.getIp())) |
| | | .header("Authorization", getToken(mesProperties)) |
| | | .header("Content-Type", "application/json") |
| | | .body(requestJsonStr) |
| | | .execute() |
| | |
| | | if(entries.getInt("code")==0){ |
| | | return true; |
| | | }else{ |
| | | throw new RuntimeException("同步到MES失败:"+entries.getStr("msg")); |
| | | throw new RuntimeException("【"+contract+"】同步到MES失败:"+entries.getStr("msg")); |
| | | } |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | throw new RuntimeException("同步MES实时库存接口异常:"+e.getMessage()); |
| | | throw new RuntimeException("【"+contract+"】同步MES实时库存接口异常:"+e.getMessage()); |
| | | } |
| | | } |
| | | |