package com.itstyle.mdm.utils;
|
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONObject;
|
import com.itstyle.mdm.entity.HttpClientResult;
|
import com.itstyle.quartz.entity.SysConfigEntity;
|
import com.itstyle.mdm.enumwrap.MdmEnum;
|
import com.itstyle.mdm.service.MdmService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.stereotype.Service;
|
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.UUID;
|
|
/**
|
* 主数据获取
|
*/
|
@Service("mdmUtils")
|
public class MdmUtils {
|
|
@Value("${MDM_ADRESS}")
|
private String MDM_ADRESS;
|
|
@Autowired
|
private MdmService mdmService;
|
|
|
/**
|
* MDM局域物料名称编码数据获取
|
* @return
|
*/
|
public String queryMaterial(String name){
|
StringBuffer returnJson = new StringBuffer();
|
Map<String,String> params = new HashMap<>();
|
params.put("code","1560000581165.1560000576507.a94a779e9e6d3ecbb646e39477dad6ec");//授权码
|
params.put("current","1");//页码
|
params.put("size","1000");//每页记录数(最大1000)
|
params.put("queryValue","");//模糊查询
|
MdmEnum anEnum = MdmEnum.getMdmEnumByAddress(name);
|
String address = anEnum.getAddress();
|
try {
|
HttpClientResult httpClientResult = MdmApiUtils.doPost(MDM_ADRESS+address, null, params);
|
int code = httpClientResult.getCode();
|
if(200 == code){
|
//成功
|
String records = httpClientResult.getContent();
|
records = records.replaceAll("\\p{Z}", "");
|
JSONObject jsonObj = JSON.parseObject(records);
|
records = jsonObj.getString("records");
|
JSONArray recordArray = JSON.parseArray(records);//物料数据信息
|
//将数据保存至数据库
|
JSONArray newJson = mdmService.saveMdmData(recordArray,name);
|
if(newJson.size()!=0){
|
//定义返回json格式
|
returnJson.append("{\n" +
|
" \"current\": 1,\n" +
|
" \"orders\": [],\n" +
|
" \"pages\": 303,");
|
returnJson.append("\"records\": "+newJson.toJSONString());
|
returnJson.append(",\n" +
|
" \"searchCount\": true,\n" +
|
" \"size\": 1,\n" +
|
" \"total\": 303\n" +
|
"}");
|
//返回json格式参数
|
String toString = returnJson.toString();
|
System.out.println(toString);
|
//分发增量数据至异构系统
|
distributeDataToSys(toString,name);
|
}
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
return "";
|
}
|
|
/**
|
* MDM计量单位数据获取
|
* @return
|
*/
|
public String queryUnit(String name){
|
MdmEnum anEnum = MdmEnum.getMdmEnumByAddress(name);
|
StringBuffer returnJson = new StringBuffer();
|
Map<String,String> params = new HashMap<>();
|
params.put("code","1560000581165.1560000576507.a94a779e9e6d3ecbb646e39477dad6ec");//授权码
|
params.put("type",anEnum.getType());//类型
|
String address = anEnum.getAddress();
|
try {
|
HttpClientResult httpClientResult = MdmApiUtils.doPost(MDM_ADRESS+address, null, params);
|
int code = httpClientResult.getCode();
|
if(200 == code){
|
//成功
|
String records = httpClientResult.getContent();
|
records = records.replaceAll("\\p{Z}", "");
|
JSONObject jsonObj = JSON.parseObject(records);
|
records = jsonObj.getString("data");
|
JSONArray recordArray = JSON.parseArray(records);//物料数据信息
|
//将数据保存至数据库
|
JSONArray newJson = mdmService.saveMdmUnitData(recordArray,name);
|
if(newJson.size()!=0){
|
//定义返回json格式
|
returnJson.append("{\n" +
|
" \"code\": 200,\n" +
|
" \"data\":"+newJson.toJSONString());
|
returnJson.append(",\n" +
|
" \"message\": \"请求成功\",\n" +
|
" \"success\": true\n" +
|
"}");
|
//返回json格式参数
|
String toString = returnJson.toString();
|
System.out.println(toString);
|
//分发增量数据至异构系统
|
distributeDataToSys(toString,name);
|
}
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
return "";
|
}
|
|
/**
|
* 分发主数据数据至异构系统
|
* @param jsonParam
|
*/
|
public void distributeDataToSys(String jsonParam,String interfaceName){
|
List<SysConfigEntity> sysConfigEntities = mdmService.querySysConfigs(interfaceName);
|
if (sysConfigEntities.size()!=0){
|
for (int i = 0; i < sysConfigEntities.size(); i++) {
|
SysConfigEntity sysConfigEntity = sysConfigEntities.get(i);
|
String sysName = sysConfigEntity.getSysName();//系统名称
|
String address = sysConfigEntity.getAddress();//分发地址
|
HttpClientResult httpClientResult = null;
|
String uuid = UUID.randomUUID().toString();
|
try {
|
//数据分发
|
httpClientResult = MdmApiUtils.doPostJson(address, jsonParam);
|
//响应结果
|
String content = httpClientResult.getContent();
|
int code = httpClientResult.getCode();
|
if(200 == code){
|
//成功
|
this.saveInterfaceLog(uuid,interfaceName,address,jsonParam,content);
|
}else {
|
//异常
|
this.saveInterfaceLog(uuid,interfaceName,address,jsonParam,content);
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
this.saveInterfaceLog(uuid,interfaceName,address,jsonParam,"{\"batchId\":\""+uuid+"\",\"msg\":\" 接口调用网络异常!!! \"}");
|
}
|
|
}
|
}
|
}
|
|
/**
|
* 保存接口分发日志
|
* @param interfaceName
|
* @param url
|
* @param param
|
* @param result
|
*/
|
public void saveInterfaceLog(String uuid,String interfaceName,String url,String param,String result){
|
mdmService.saveInterfaceLog(uuid,interfaceName, url, param, result);
|
}
|
}
|