package com.dy.pipIrrStatistics.stClient; import com.dy.common.webUtil.QueryResultVo; import com.dy.pipIrrGlobal.daoSt.StClientAmountDayMapper ; import com.dy.pipIrrGlobal.daoSt.StClientAmountMonthMapper ; import com.dy.pipIrrGlobal.daoSt.StClientAmountYearMapper ; import com.dy.pipIrrGlobal.voSt.*; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.common.utils.PojoUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.text.ParseException; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * @Author: liurunyu * @Date: 2024/12/30 15:22 * @Description */ @Slf4j @Service public class StClientSv { private StClientAmountDayMapper stClientAmountDayDao ; private StClientAmountMonthMapper stClientAmountMonthDao ; private StClientAmountYearMapper stClientAmountYearDao ; @Autowired private void setDao(StClientAmountDayMapper dao){ this.stClientAmountDayDao = dao ; } @Autowired private void setDao(StClientAmountMonthMapper dao){ this.stClientAmountMonthDao = dao ; } @Autowired private void setDao(StClientAmountYearMapper dao){ this.stClientAmountYearDao = dao ; } /** * 查询农户用水日统计 * @param qo * @return */ public QueryResultVo> selectStClientAmountDay(StClientQo qo) { QueryResultVo> rsVo = new QueryResultVo<>() ; // 生成查询参数 Map params = (Map) PojoUtils.generalize(qo) ; // 获取符合条件的记录数 Long itemTotal = stClientAmountDayDao.selectCountDayStatistics(params) ; if(itemTotal != null && itemTotal > 0) { rsVo.pageSize = qo.pageSize; rsVo.pageCurr = qo.pageCurr; rsVo.calculateAndSet(itemTotal, params); rsVo.obj = stClientAmountDayDao.selectDayStatistics(params); } return rsVo ; } /** * 查询农户用水月统计 * @param qo * @return */ public QueryResultVo> selectStClientAmountMonth(StClientQo qo) { QueryResultVo> rsVo = new QueryResultVo<>() ; // 生成查询参数 Map params = (Map) PojoUtils.generalize(qo) ; // 获取符合条件的记录数 Long itemTotal = stClientAmountMonthDao.selectCountMonthStatistics(params) ; if(itemTotal != null && itemTotal > 0) { rsVo.pageSize = qo.pageSize; rsVo.pageCurr = qo.pageCurr; rsVo.calculateAndSet(itemTotal, params); rsVo.obj = stClientAmountMonthDao.selectMonthStatistics(params); } return rsVo ; } /** * 查询农户用水年统计 * @param qo * @return */ public QueryResultVo selectStClientAmountYear(StClientQo qo, List yearGrp) throws ParseException { QueryResultVo rsQrVo = new QueryResultVo<>() ; VoStClientAmountYear rsVo = new VoStClientAmountYear(); rsVo.yearGrp = yearGrp ; rsQrVo.obj = rsVo ; // 生成查询参数 Map params = (Map) PojoUtils.generalize(qo) ; // 获取符合条件的记录数 Long itemTotal = stClientAmountYearDao.selectCountYearStatistics(params) ; if(itemTotal != null && itemTotal > 0) { rsQrVo.pageSize = qo.pageSize; rsQrVo.pageCurr = qo.pageCurr; rsQrVo.calculateAndSet(itemTotal, params); List group = new ArrayList<>(); int count = 1 ; for(int year: yearGrp){ params.put("year", year); List list = stClientAmountYearDao.selectYearStatistics(params); if(group.isEmpty()){ this.completion(group, list); } this.merge(count, group, list) ; count += 1 ; } rsVo.records = group ; } return rsQrVo ; } /** * 补全, 集合中没有就生成一个 * @param group * @param list */ private void completion(List group, List list){ boolean found ; for (VoStClientAmountYearRecord voInList : list) { found = false ; for(VoStClientAmountYearRecords voInGrp : group) { if(voInList.clientId.longValue() == voInGrp.clientId.longValue()) { found = true ; } } if(!found) { VoStClientAmountYearRecords vo4s = new VoStClientAmountYearRecords(); vo4s.clientId = voInList.clientId; vo4s.clientNum = voInList.clientNum; vo4s.clientName = voInList.clientName; vo4s.clientAddress = voInList.clientAddress; group.add(vo4s) ; } } } /** * 合并, 集合中有就合并 * @param count * @param group * @param list */ private void merge(int count, List group, List list){ for (VoStClientAmountYearRecord voInList : list) { VoStClientAmountYearRecords voInGrp_ = null ; for(VoStClientAmountYearRecords voInGrp : group) { if(voInList.clientId.longValue() == voInGrp.clientId.longValue()) { voInGrp_ = voInGrp ; break ; } } if(voInGrp_ != null){ this.merge(count, voInGrp_, voInList); } } } /** * 合并值 * @param count * @param vo4s * @param vo */ private void merge(int count, VoStClientAmountYearRecords vo4s, VoStClientAmountYearRecord vo){ switch (count){ case 1: vo4s.amount1 = vo.amount; vo4s.money1 = vo.money; vo4s.times1 = vo.times; break; case 2: vo4s.amount2 = vo.amount; vo4s.money2 = vo.money; vo4s.times2 = vo.times; break; case 3: vo4s.amount3 = vo.amount; vo4s.money3 = vo.money; vo4s.times3 = vo.times; break; case 4: vo4s.amount4 = vo.amount; vo4s.money4 = vo.money; vo4s.times4 = vo.times; break; case 5: vo4s.amount5 = vo.amount; vo4s.money5 = vo.money; vo4s.times5 = vo.times; break; case 6: vo4s.amount6 = vo.amount; vo4s.money6 = vo.money; vo4s.times6 = vo.times; break; case 7: vo4s.amount7 = vo.amount; vo4s.money7 = vo.money; vo4s.times7 = vo.times; break; case 8: vo4s.amount8 = vo.amount; vo4s.money8 = vo.money; vo4s.times8 = vo.times; break; case 9: vo4s.amount9 = vo.amount; vo4s.money9 = vo.money; vo4s.times9 = vo.times; break; case 10: vo4s.amount10 = vo.amount; vo4s.money10 = vo.money; vo4s.times10 = vo.times; break; } } }