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(){ StringBuffer returnJson = new StringBuffer(); Map 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("局域物料名称编码数据获取"); 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,"局域物料名称编码数据获取"); 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,"局域物料名称编码数据获取"); } } } catch (Exception e) { e.printStackTrace(); } return ""; } /** * MDM计量单位数据获取 * @return */ public String queryUnit(){ MdmEnum anEnum = MdmEnum.getMdmEnumByAddress("计量单位业务基础数据编码获取"); StringBuffer returnJson = new StringBuffer(); Map 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,"计量单位业务基础数据编码获取"); 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,"计量单位业务基础数据编码获取"); } } } catch (Exception e) { e.printStackTrace(); } return ""; } /** * 分发主数据数据至异构系统 * @param jsonParam */ public void distributeDataToSys(String jsonParam,String interfaceName){ List 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); } }