package com.hbbh.adapter.manager.impl; import com.google.common.collect.Maps; import com.hbbh.adapter.config.GoldenConfig; import com.hbbh.adapter.covert.PointConvert; import com.hbbh.adapter.dao.golden.*; import com.hbbh.adapter.enums.TableEnum; import com.hbbh.adapter.manager.DataSource; import com.hbbh.adapter.pojo.Point; import com.hbbh.adapter.pojo.golden.*; import com.hbbh.adapter.utils.EmptyUtils; import com.hbbh.adapter.utils.SearchConditionUtil; import com.rtdb.enums.DataSort; import com.rtdb.model.Entity; import com.rtdb.model.FullPoint; import com.rtdb.model.Table; import com.rtdb.service.impl.BaseImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; import java.util.Map; import java.util.TreeMap; @Service public class DataSourceImpl implements DataSource { private static final Logger log = LoggerFactory.getLogger(Class.class); @Autowired GoldenConfig goldenConfig; /** * @param pointIds 标签点id数组 * @return * @throws Exception */ public List selectFullPoint(int[] pointIds) throws Exception { BaseImpl base = new BaseImpl(goldenConfig.getServer()); Entity pointsProperties = base.getPointsProperties(pointIds); List list = pointsProperties.getList(); return list; } /** * 获取表与标签数量关系 * * @return * @throws Exception */ public Map getCount() throws Exception { Map map = Maps.newHashMap(); BaseImpl base = new BaseImpl(goldenConfig.getServer()); int[] tableIds = base.getTableIds(); for (int tableId : tableIds) { int i = base.getTableRealSizeById(tableId); Table table = base.getTablePropertiesById(tableId); map.put(table, i); } return map; } /* public List selectEntity() throws Exception { int count = 0; BaseImpl base = new BaseImpl(goldenConfig.getServer()); int[] pointIds = base.search(SearchConditionUtil.getSearchCondition(), count, DataSort.SORT_BY_ID); List fullPoints = selectFullPoint(pointIds); List results = PointConvert.fullpointsToPointEntity(fullPoints); return results; }*/ /** * k - tableName * v - point * * @return * @throws Exception */ public Map> selectAllEntity() throws Exception { Map> result = Maps.newTreeMap(); //Map> result=Maps.newHashMap(); Map map = getCount(); BaseImpl base = new BaseImpl(goldenConfig.getServer()); map.forEach((k, v) -> { try { int[] pointIds = base.search(SearchConditionUtil.getSearchCondition(), v, DataSort.SORT_BY_ID); List fullPoints = selectFullPoint(pointIds); List points = PointConvert.fullpointsToPointEntity(fullPoints); result.put(k.getName(), points); } catch (Exception e) { throw new RuntimeException("取数据失败"); } }); return result; } public void execute() throws Exception { Map> tableListMap = selectAllEntity(); for (Map.Entry> entry : tableListMap.entrySet()) { String k = entry.getKey(); List v = entry.getValue(); insert(k, v); } } @Autowired SMSDao smsDao; @Autowired DLZ_PLCDao dlzPlcDao; @Autowired DJW_PLCDao djwPlcDao; @Autowired BDS_PLCDao bdsPlcDao; @Autowired KTNZ2C_PLCDao ktnz2CPlcDao; public void insert(String flag, List point) { if (EmptyUtils.isEmpty(flag)) { log.info("golden 中 未获取到表信息 -->{}", flag); return; } if (point.size()==0) { log.info("golden 中 表 ----> {} 没有数据", flag); return; } log.info("golden 中 表 ----> {} 正在构建数据...",flag); TableEnum byType = TableEnum.getByType(flag); //TODO:部分表未介入 if (EmptyUtils.isEmpty(byType)){ log.info("golden 中 表 ----> {} 暂未介入adapter程序中", flag); return; } switch (byType) { case SMS: point.forEach(p -> { SMS data = PointConvert.pointToSMS(p); smsDao.saveAndFlush(data); }); break; case BDS_PLC: point.forEach(p -> { BDS_PLC data = PointConvert.pointToBDSPLC(p); bdsPlcDao.saveAndFlush(data); }); break; case DJW_PLC: point.forEach(p -> { DJW_PLC data = PointConvert.pointToDJWPLC(p); djwPlcDao.saveAndFlush(data); }); break; case DLZ_PLC: point.forEach(p -> { DLZ_PLC data = PointConvert.pointToDLZPLC(p); dlzPlcDao.saveAndFlush(data); }); break; case KTNZ2C_PLC: point.forEach(p -> { KTNZ2C_PLC data = PointConvert.pointToKTNZ2CPLC(p); ktnz2CPlcDao.saveAndFlush(data); }); break; } log.info("golden 中 表 ----> {} 构建数据成功",flag); } }