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<List<VoStClientAmountDay>> selectStClientAmountDay(StClientQo qo) {
|
QueryResultVo<List<VoStClientAmountDay>> rsVo = new QueryResultVo<>() ;
|
// 生成查询参数
|
Map<String, Object> params = (Map<String, Object>) 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<List<VoStClientAmountMonth>> selectStClientAmountMonth(StClientQo qo) {
|
QueryResultVo<List<VoStClientAmountMonth>> rsVo = new QueryResultVo<>() ;
|
// 生成查询参数
|
Map<String, Object> params = (Map<String, Object>) 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<List<VoStClientAmountYearRecords>> selectStClientAmountYear(StClientQo qo, List<Integer> yearGrp) throws ParseException {
|
QueryResultVo<List<VoStClientAmountYearRecords>> rsVo = new QueryResultVo<>() ;
|
// 生成查询参数
|
Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ;
|
params.put("yearGrp", yearGrp);
|
// 获取符合条件的记录数
|
Long itemTotal = stClientAmountYearDao.selectCountYearStatistics(params) ;
|
|
if(itemTotal != null && itemTotal > 0) {
|
rsVo.pageSize = qo.pageSize;
|
rsVo.pageCurr = qo.pageCurr;
|
rsVo.calculateAndSet(itemTotal, params);
|
|
List<VoStClientAmountYearRecords> group = new ArrayList<>();
|
int count = 1 ;
|
for(int year: yearGrp){
|
params.put("year", year);
|
List<VoStClientAmountYearRecord> list = stClientAmountYearDao.selectYearStatistics(params);
|
if(group.isEmpty()){
|
this.completion(group, list);
|
}
|
this.merge(count, group, list) ;
|
count += 1 ;
|
}
|
rsVo.obj = group ;
|
}
|
return rsVo ;
|
}
|
|
/**
|
* 补全, 集合中没有就生成一个
|
* @param group
|
* @param list
|
*/
|
private void completion(List<VoStClientAmountYearRecords> group, List<VoStClientAmountYearRecord> 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<VoStClientAmountYearRecords> group, List<VoStClientAmountYearRecord> 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;
|
}
|
}
|
}
|