package com.itstyle.mdm.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.itstyle.mdm.entity.InterfaceLogData; import com.itstyle.quartz.dynamicquery.DynamicQuery; import com.itstyle.mdm.entity.MdmData; import com.itstyle.quartz.entity.SysConfigEntity; import com.itstyle.mdm.service.MdmService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Date; import java.util.List; import java.util.UUID; /** * MDM数据处理层实现 */ @Service() @Transactional(readOnly = true) public class MdmServiceImpl implements MdmService { @Autowired private DynamicQuery dynamicQuery; @Override @Transactional public JSONArray saveMdmData(JSONArray recordArray,String name) { JSONArray newJsonArray = new JSONArray(); int size = recordArray.size(); Object[] params = new Object[]{}; MdmData mdmData = null; if(size != 0){ for (int i = 0; i < size; i++) { String json = recordArray.get(i).toString(); JSONObject jsonObj = JSON.parseObject(json); String id = jsonObj.getString("id"); String tgcoriginalcode = jsonObj.getString("tgcoriginalcode"); String updatedat = jsonObj.getString("updatedat"); String updatetime = jsonObj.getString("updatetime"); mdmData = new MdmData(); mdmData.setType(name); mdmData.setId(id); mdmData.setTgcoriginalCode(tgcoriginalcode); mdmData.setUpdatedat(updatedat); mdmData.setUpdatetime(updatetime); String countSql = "SELECT mdm.uuid,mdm.id,mdm.tgcoriginalCode,mdm.updatedat,mdm.updatetime FROM mdm_data AS mdm where mdm.tgcoriginalCode='"+tgcoriginalcode+"' "; List list = dynamicQuery.nativeQueryList(MdmData.class,countSql,params); if(list.size()>0){ //说明存在数据 for (MdmData mdm : list) { String updatetime1 = mdm.getUpdatetime(); if(updatetime1.equals(updatetime)){ //数据无变化 continue; } jsonObj.put("renewstatus","update"); newJsonArray.add(jsonObj); //数据存在变化 dynamicQuery.update(mdm);//更新数据 } }else { jsonObj.put("renewstatus","new"); newJsonArray.add(jsonObj); //说明该数据为新数据 mdmData.setUuid(UUID.randomUUID().toString()); dynamicQuery.save(mdmData); } } } return newJsonArray; } @Override @Transactional public JSONArray saveMdmUnitData(JSONArray recordArray, String name) { JSONArray newJsonArray = new JSONArray(); int size = recordArray.size(); Object[] params = new Object[]{}; MdmData mdmData = null; if(size != 0){ for (int i = 0; i < size; i++) { String json = recordArray.get(i).toString(); JSONObject jsonObj = JSON.parseObject(json); String id = jsonObj.getString("code"); String tgcoriginalcode = jsonObj.getString("originalcode"); //String updatedat = jsonObj.getString("updatedat"); String updatetime = jsonObj.getString("updatetime"); mdmData = new MdmData(); mdmData.setType(name); mdmData.setId(id); mdmData.setTgcoriginalCode(tgcoriginalcode); mdmData.setUpdatedat(""); mdmData.setUpdatetime(updatetime); String countSql = "SELECT mdm.uuid,mdm.id,mdm.tgcoriginalCode,mdm.updatedat,mdm.updatetime FROM mdm_data AS mdm where mdm.tgcoriginalCode='"+tgcoriginalcode+"' "; List list = dynamicQuery.nativeQueryList(MdmData.class,countSql,params); if(list.size()>0){ //说明存在数据 for (MdmData mdm : list) { String updatetime1 = mdm.getUpdatetime(); if(updatetime1.equals(updatetime)){ //数据无变化 continue; } jsonObj.put("renewstatus","update"); newJsonArray.add(jsonObj); //数据存在变化 dynamicQuery.update(mdm);//更新数据 } }else { jsonObj.put("renewstatus","new"); newJsonArray.add(jsonObj); //说明该数据为新数据 mdmData.setUuid(UUID.randomUUID().toString()); dynamicQuery.save(mdmData); } } } return newJsonArray; } @Override public List querySysConfigs(String interfaceName) { Object[] params = new Object[]{interfaceName}; String countSql = "select id,ADDRESS as address,DESCRIPTION as description,cronExpression,isEnable,sysName,association from sys_config where isEnable='启用' and association=?"; List list = dynamicQuery.nativeQueryList(SysConfigEntity.class,countSql,params); return list; } @Override @Transactional public int saveInterfaceLog(String uuid,String interfaceName, String url, String param, String result) { InterfaceLogData interfaceLogData = new InterfaceLogData(); interfaceLogData.setUuid(uuid); interfaceLogData.setInterfaceName(interfaceName); interfaceLogData.setCreateTime(new Date()); interfaceLogData.setPrams(param); interfaceLogData.setResult(result); interfaceLogData.setUrl(url); try{ dynamicQuery.save(interfaceLogData); return 1; }catch (Exception e){ e.printStackTrace(); return 0; } } }