package com.dy.pipIrrStatistics.client;
|
|
import com.dy.common.webUtil.QueryResultVo;
|
import com.dy.pipIrrGlobal.daoRm.RmClientAmountDayLastMapper;
|
import com.dy.pipIrrGlobal.daoRm.RmOpenCloseValveHistoryMapper;
|
import com.dy.pipIrrGlobal.daoSe.SeCardOperateMapper;
|
import com.dy.pipIrrGlobal.voSt.*;
|
import com.dy.pipIrrStatistics.card.IcCardqo.CommonQO;
|
import com.dy.pipIrrStatistics.client.qo.*;
|
import com.dy.pipIrrStatistics.intake.qo.ClientAmountQO;
|
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.time.LocalDate;
|
import java.time.LocalDateTime;
|
import java.util.Calendar;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.Optional;
|
|
/**
|
* @author ZhuBaoMin
|
* @date 2024-08-06 9:43
|
* @LastEditTime 2024-08-06 9:43
|
* @Description
|
*/
|
|
@Slf4j
|
@Service
|
public class ClientSv {
|
@Autowired
|
private RmOpenCloseValveHistoryMapper rmOpenCloseValveHistoryMapper;
|
@Autowired
|
private SeCardOperateMapper seCardOperateMapper;
|
|
@Autowired
|
private RmClientAmountDayLastMapper rmClientAmountDayLastMapper;
|
|
/**
|
* 获取指定时间段内开阀次数超过指定值的农户
|
* @param qo
|
* @return
|
*/
|
public QueryResultVo<List<VoClient>> getLargeOpenCountClients(OpenCountQO qo) {
|
/**
|
* 补齐起止时间,如果开始时间为空,则默认为当前日期
|
*/
|
String timeStart = qo.getTimeStart();
|
String timeStop = qo.getTimeStop();
|
if(timeStart != null) {
|
timeStart = timeStart + " 00:00:00";
|
}else {
|
timeStart = LocalDate.now() + " 00:00:00";
|
}
|
if(timeStop != null) {
|
timeStop = timeStop + " 23:59:59";
|
}
|
qo.setTimeStart(timeStart);
|
qo.setTimeStop(timeStop);
|
|
// 生成查询参数
|
Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ;
|
|
// 获取符合条件的记录数
|
Long itemTotal = Optional.ofNullable(rmOpenCloseValveHistoryMapper.getLargeOpenCountClientsCount(params)).orElse(0L);
|
|
QueryResultVo<List<VoClient>> rsVo = new QueryResultVo<>() ;
|
|
rsVo.pageSize = qo.pageSize ;
|
rsVo.pageCurr = qo.pageCurr ;
|
|
rsVo.calculateAndSet(itemTotal, params);
|
rsVo.obj = rmOpenCloseValveHistoryMapper.getLargeOpenCountClients(params);
|
return rsVo ;
|
}
|
|
/**
|
* 获取指定时间段内开阀次数低于指定值的农户
|
* @param qo
|
* @return
|
*/
|
public QueryResultVo<List<VoClient>> getSmallOpenCountClients(OpenCountQO qo) {
|
/**
|
* 补齐起止时间,如果开始时间为空,则默认为当前日期
|
*/
|
String timeStart = qo.getTimeStart();
|
String timeStop = qo.getTimeStop();
|
if(timeStart != null) {
|
timeStart = timeStart + " 00:00:00";
|
}else {
|
timeStart = LocalDate.now() + " 00:00:00";
|
}
|
if(timeStop != null) {
|
timeStop = timeStop + " 23:59:59";
|
}
|
qo.setTimeStart(timeStart);
|
qo.setTimeStop(timeStop);
|
|
// 生成查询参数
|
Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ;
|
|
// 获取符合条件的记录数
|
Long itemTotal = Optional.ofNullable(rmOpenCloseValveHistoryMapper.getSmallOpenCountClientsCount(params)).orElse(0L);
|
|
QueryResultVo<List<VoClient>> rsVo = new QueryResultVo<>() ;
|
|
rsVo.pageSize = qo.pageSize ;
|
rsVo.pageCurr = qo.pageCurr ;
|
|
rsVo.calculateAndSet(itemTotal, params);
|
rsVo.obj = rmOpenCloseValveHistoryMapper.getSmallOpenCountClients(params);
|
return rsVo ;
|
}
|
|
/**
|
* 获取指定时间段内用水量超过指定值的农户
|
* @param qo
|
* @return
|
*/
|
public QueryResultVo<List<VoClient>> getLargeWaterConsumptionClients(WaterConsumptionQO qo) {
|
/**
|
* 补齐起止时间,如果开始时间为空,则默认为当前日期
|
*/
|
String timeStart = qo.getTimeStart();
|
String timeStop = qo.getTimeStop();
|
if(timeStart != null) {
|
timeStart = timeStart + " 00:00:00";
|
}else {
|
timeStart = LocalDate.now() + " 00:00:00";
|
}
|
if(timeStop != null) {
|
timeStop = timeStop + " 23:59:59";
|
}
|
qo.setTimeStart(timeStart);
|
qo.setTimeStop(timeStop);
|
|
// 生成查询参数
|
Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ;
|
|
// 获取符合条件的记录数
|
Long itemTotal = Optional.ofNullable(rmOpenCloseValveHistoryMapper.getLargeWaterConsumptionClientsCount(params)).orElse(0L);
|
|
QueryResultVo<List<VoClient>> rsVo = new QueryResultVo<>() ;
|
|
rsVo.pageSize = qo.pageSize ;
|
rsVo.pageCurr = qo.pageCurr ;
|
|
rsVo.calculateAndSet(itemTotal, params);
|
rsVo.obj = rmOpenCloseValveHistoryMapper.getLargeWaterConsumptionClients(params);
|
return rsVo ;
|
}
|
|
/**
|
* 获取指定时间段内消费金额超过指定值的农户
|
* @param qo
|
* @return
|
*/
|
public QueryResultVo<List<VoClient>> getLargeAmountSpentClients(AmountSpentQO qo) {
|
/**
|
* 补齐起止时间,如果开始时间为空,则默认为当前日期
|
*/
|
String timeStart = qo.getTimeStart();
|
String timeStop = qo.getTimeStop();
|
if(timeStart != null) {
|
timeStart = timeStart + " 00:00:00";
|
}else {
|
timeStart = LocalDate.now() + " 00:00:00";
|
}
|
if(timeStop != null) {
|
timeStop = timeStop + " 23:59:59";
|
}
|
qo.setTimeStart(timeStart);
|
qo.setTimeStop(timeStop);
|
|
// 生成查询参数
|
Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ;
|
|
// 获取符合条件的记录数
|
Long itemTotal = Optional.ofNullable(rmOpenCloseValveHistoryMapper.getLargeAmountSpentClientsCount(params)).orElse(0L);
|
|
QueryResultVo<List<VoClient>> rsVo = new QueryResultVo<>() ;
|
|
rsVo.pageSize = qo.pageSize ;
|
rsVo.pageCurr = qo.pageCurr ;
|
|
rsVo.calculateAndSet(itemTotal, params);
|
rsVo.obj = rmOpenCloseValveHistoryMapper.getLargeAmountSpentClients(params);
|
return rsVo ;
|
}
|
|
/**
|
* 获取指定时间段内用水时长超过指定值的农户
|
* @param qo
|
* @return
|
*/
|
public QueryResultVo<List<VoClient>> getLargeWaterDurationClients(WaterDurationQO qo) {
|
/**
|
* 补齐起止时间,如果开始时间为空,则默认为当前日期
|
*/
|
String timeStart = qo.getTimeStart();
|
String timeStop = qo.getTimeStop();
|
if(timeStart != null) {
|
timeStart = timeStart + " 00:00:00";
|
}else {
|
timeStart = LocalDate.now() + " 00:00:00";
|
}
|
if(timeStop != null) {
|
timeStop = timeStop + " 23:59:59";
|
}
|
qo.setTimeStart(timeStart);
|
qo.setTimeStop(timeStop);
|
|
// 生成查询参数
|
Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ;
|
|
// 获取符合条件的记录数
|
Long itemTotal = Optional.ofNullable(rmOpenCloseValveHistoryMapper.getLargeWaterDurationClientsCount(params)).orElse(0L);
|
|
QueryResultVo<List<VoClient>> rsVo = new QueryResultVo<>() ;
|
|
rsVo.pageSize = qo.pageSize ;
|
rsVo.pageCurr = qo.pageCurr ;
|
|
rsVo.calculateAndSet(itemTotal, params);
|
rsVo.obj = rmOpenCloseValveHistoryMapper.getLargeWaterDurationClients(params);
|
return rsVo ;
|
}
|
|
/**
|
* 指定时间段内开物理卡农户
|
* @param qo
|
* @return
|
*/
|
public QueryResultVo<List<VoClientOpenCardCount>> getOpenIcCardClients(CommonQO qo) {
|
|
String timeStart = qo.getTimeStart();
|
String timeStop = qo.getTimeStop();
|
|
if (timeStart != null && timeStart != ""){
|
timeStart = timeStart + " 00:00:00";
|
}else {
|
timeStart = LocalDate.now() + " 00:00:00";
|
}
|
if (timeStop != null && timeStop != ""){
|
timeStop = timeStop + " 23:59:59";
|
}else {
|
timeStop = LocalDateTime.now().toString();
|
}
|
qo.setTimeStart(timeStart);
|
qo.setTimeStop(timeStop);
|
|
Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo);
|
Long itemTotal = seCardOperateMapper.getOpenIcCardClientsCount(params);
|
|
QueryResultVo<List<VoClientOpenCardCount>> rsVo = new QueryResultVo<>() ;
|
rsVo.pageSize = qo.pageSize ;
|
rsVo.pageCurr = qo.pageCurr ;
|
|
rsVo.calculateAndSet(itemTotal, params);
|
rsVo.obj = seCardOperateMapper.getOpenIcCardClients(params);
|
return rsVo ;
|
}
|
|
/**
|
* 指定时间段内每个农户充值合计(物理卡)
|
* @param qo
|
* @return
|
*/
|
public QueryResultVo<List<VoClientRechargeTotal>> getRechargeTotalClients(CommonQO qo) {
|
|
String timeStart = qo.getTimeStart();
|
String timeStop = qo.getTimeStop();
|
|
if (timeStart != null && timeStart != ""){
|
timeStart = timeStart + " 00:00:00";
|
}else {
|
timeStart = LocalDate.now() + " 00:00:00";
|
}
|
if (timeStop != null && timeStop != ""){
|
timeStop = timeStop + " 23:59:59";
|
}else {
|
timeStop = LocalDateTime.now().toString();
|
}
|
qo.setTimeStart(timeStart);
|
qo.setTimeStop(timeStop);
|
|
Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo);
|
Long itemTotal = seCardOperateMapper.getRechargeTotalClientsCount(params);
|
|
QueryResultVo<List<VoClientRechargeTotal>> rsVo = new QueryResultVo<>() ;
|
rsVo.pageSize = qo.pageSize ;
|
rsVo.pageCurr = qo.pageCurr ;
|
|
rsVo.calculateAndSet(itemTotal, params);
|
rsVo.obj = seCardOperateMapper.getRechargeTotalClients(params);
|
return rsVo ;
|
}
|
|
/**
|
* 指定时间段内物理卡充值金额超过指定值的农户
|
* @param qo
|
* @return
|
*/
|
public QueryResultVo<List<VoClientRechargeTotal>> getRechargeTotalGtValueClients(RechargeTotalGtValueQo qo) {
|
|
String timeStart = qo.getTimeStart();
|
String timeStop = qo.getTimeStop();
|
|
if (timeStart != null && timeStart != ""){
|
timeStart = timeStart + " 00:00:00";
|
}else {
|
timeStart = LocalDate.now() + " 00:00:00";
|
}
|
if (timeStop != null && timeStop != ""){
|
timeStop = timeStop + " 23:59:59";
|
}else {
|
timeStop = LocalDateTime.now().toString();
|
}
|
qo.setTimeStart(timeStart);
|
qo.setTimeStop(timeStop);
|
|
if (qo.getValue() == null || qo.getValue() < 0){
|
qo.setValue(0.0);
|
}
|
|
Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo);
|
Long itemTotal = seCardOperateMapper.getRechargeTotalGtValueClientsCount(params);
|
|
QueryResultVo<List<VoClientRechargeTotal>> rsVo = new QueryResultVo<>() ;
|
rsVo.pageSize = qo.pageSize ;
|
rsVo.pageCurr = qo.pageCurr ;
|
|
rsVo.calculateAndSet(itemTotal, params);
|
rsVo.obj = seCardOperateMapper.getRechargeTotalGtValueClients(params);
|
return rsVo ;
|
}
|
|
/**
|
* 统计指定月份各农户各天用水量及消费金额
|
* @param qo
|
* @return
|
*/
|
public QueryResultVo<List<VoDayClient>> getDayAmountAndMoney(ClientAmountQO qo) {
|
String yearMonth = qo.getYearMonth();
|
Integer year = Integer.parseInt(yearMonth.substring(0,4));
|
Integer month = Integer.parseInt(yearMonth.substring(5,7));
|
qo.setYear(year);
|
qo.setMonth(month);
|
|
// 生成查询参数
|
Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ;
|
|
// 获取符合条件的记录数
|
Long itemTotal = Optional.ofNullable(rmClientAmountDayLastMapper.getDayAmountAndMoneyCount(params)).orElse(0L);
|
|
QueryResultVo<List<VoDayClient>> rsVo = new QueryResultVo<>() ;
|
|
rsVo.pageSize = qo.pageSize ;
|
rsVo.pageCurr = qo.pageCurr ;
|
|
rsVo.calculateAndSet(itemTotal, params);
|
rsVo.obj = rmClientAmountDayLastMapper.getDayAmountAndMoney(params);
|
return rsVo ;
|
}
|
|
/**
|
* 统计指定年份各农户各月用水量及消费金额
|
* @param qo
|
* @return
|
*/
|
public QueryResultVo<List<VoMonthClient>> getMonthAmountAndMoney(ClientAmountQO qo) {
|
Calendar calendar = Calendar.getInstance();
|
Integer year = Optional.ofNullable(qo.getYear()).orElse(calendar.get(Calendar.YEAR));
|
qo.setYear(year);
|
|
// 生成查询参数
|
Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ;
|
|
// 获取符合条件的记录数
|
Long itemTotal = Optional.ofNullable(rmClientAmountDayLastMapper.getMonthAmountAndMoneyCount(params)).orElse(0L);
|
|
QueryResultVo<List<VoMonthClient>> rsVo = new QueryResultVo<>() ;
|
|
rsVo.pageSize = qo.pageSize ;
|
rsVo.pageCurr = qo.pageCurr ;
|
|
rsVo.calculateAndSet(itemTotal, params);
|
rsVo.obj = rmClientAmountDayLastMapper.getMonthAmountAndMoney(params);
|
return rsVo ;
|
}
|
}
|