package com.whyc.service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.whyc.dto.Response; import com.whyc.mapper.AbeTestDataInfMapper; import com.whyc.mapper.CallBack; import com.whyc.pojo.db_abe_testdata.AbeTestData; import com.whyc.pojo.db_abe_testdata.AbeTestDataInf; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.sql.ResultSet; import java.sql.SQLException; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @Service public class AbeTestDataInfService { @Resource private AbeTestDataInfMapper mapper; @Autowired private JdbcSqlExecuteService jdbcSqlExecuteService; public Response> getPage(int pageNum, int pageSize) { PageHelper.startPage(pageNum,pageSize); QueryWrapper query = Wrappers.query(); query.orderByDesc("record_time"); List list = mapper.selectList(query); //对list进行monId分类,来进行单体表查询 Map> monIdMap = list.stream().collect(Collectors.groupingBy(AbeTestDataInf::getMonId)); for (Integer monId : monIdMap.keySet()) { List dataList = monIdMap.get(monId); List testRecordCountList = dataList.stream().map(AbeTestDataInf::getTestRecordCount).collect(Collectors.toList()); List monDataList = getList(monId, testRecordCountList); for (AbeTestDataInf data : dataList) { for (AbeTestData monData : monDataList) { if (data.getTestRecordCount().equals(monData.getTestRecordCount())) { data.setMonVol(monData.getMonVol()); data.setMonTmp(monData.getMonTmp()); data.setMonRes(monData.getMonRes()); } } } } //分页 PageInfo pageInfo = new PageInfo(list); return new Response>().set(1,pageInfo); } private List getList(int monId,List testRecordCountList) { String testRecordCount = testRecordCountList.stream().map(String::valueOf).collect(Collectors.joining(",","(",")")); String sql = "select test_record_count,mon_vol,mon_tmp,mon_res from db_abe_testdata.tb_abe_testdata_"+monId +" where test_record_count in "+testRecordCount; List monDatalist = jdbcSqlExecuteService.executeQuery_call(sql, new CallBack() { @Override public List getResults(ResultSet rs) throws SQLException { LinkedList temp = new LinkedList<>(); while (rs.next()) { AbeTestData abeTestData = new AbeTestData(); abeTestData.setTestRecordCount(rs.getInt("test_record_count")); abeTestData.setMonVol(rs.getFloat("mon_vol")); abeTestData.setMonTmp(rs.getFloat("mon_tmp")); abeTestData.setMonRes(rs.getFloat("mon_res")); temp.add(abeTestData); } return temp; } }); return monDatalist; } }