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.text.ParseException; import java.text.SimpleDateFormat; 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> getLargeOpenCountClients(OpenCountQO 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 = LocalDate.now() + " 23:59:59"; } qo.setTimeStart(timeStart); qo.setTimeStop(timeStop); // 生成查询参数 Map params = (Map) PojoUtils.generalize(qo) ; // 获取符合条件的记录数 Long itemTotal = Optional.ofNullable(rmOpenCloseValveHistoryMapper.getLargeOpenCountClientsCount(params)).orElse(0L); QueryResultVo> 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> getSmallOpenCountClients(OpenCountQO 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 = LocalDate.now() + " 23:59:59"; } qo.setTimeStart(timeStart); qo.setTimeStop(timeStop); // 生成查询参数 Map params = (Map) PojoUtils.generalize(qo) ; // 获取符合条件的记录数 Long itemTotal = Optional.ofNullable(rmOpenCloseValveHistoryMapper.getSmallOpenCountClientsCount(params)).orElse(0L); QueryResultVo> 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> 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 params = (Map) PojoUtils.generalize(qo) ; // 获取符合条件的记录数 Long itemTotal = Optional.ofNullable(rmOpenCloseValveHistoryMapper.getLargeWaterConsumptionClientsCount(params)).orElse(0L); QueryResultVo> 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> 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 params = (Map) PojoUtils.generalize(qo) ; // 获取符合条件的记录数 Long itemTotal = Optional.ofNullable(rmOpenCloseValveHistoryMapper.getLargeAmountSpentClientsCount(params)).orElse(0L); QueryResultVo> 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> 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 params = (Map) PojoUtils.generalize(qo) ; // 获取符合条件的记录数 Long itemTotal = Optional.ofNullable(rmOpenCloseValveHistoryMapper.getLargeWaterDurationClientsCount(params)).orElse(0L); QueryResultVo> 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> 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 params = (Map) PojoUtils.generalize(qo); Long itemTotal = seCardOperateMapper.getOpenIcCardClientsCount(params); QueryResultVo> 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> 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 params = (Map) PojoUtils.generalize(qo); Long itemTotal = seCardOperateMapper.getRechargeTotalClientsCount(params); QueryResultVo> 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> 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 params = (Map) PojoUtils.generalize(qo); Long itemTotal = seCardOperateMapper.getRechargeTotalGtValueClientsCount(params); QueryResultVo> 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> getDayAmountAndMoney(ClientAmountQO qo) throws ParseException { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); String yearMonth = qo.getYearMonth(); yearMonth = yearMonth + "-01"; yearMonth = dateFormat.format(dateFormat.parse(yearMonth)); Integer year = Integer.parseInt(yearMonth.substring(0,4)); Integer month = Integer.parseInt(yearMonth.substring(5,7)); qo.setYear(year); qo.setMonth(month); // 生成查询参数 Map params = (Map) PojoUtils.generalize(qo) ; // 获取符合条件的记录数 Long itemTotal = Optional.ofNullable(rmClientAmountDayLastMapper.getDayAmountAndMoneyCount(params)).orElse(0L); QueryResultVo> 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> getMonthAmountAndMoney(ClientAmountQO qo) { Calendar calendar = Calendar.getInstance(); Integer year = Optional.ofNullable(qo.getYear()).orElse(calendar.get(Calendar.YEAR)); qo.setYear(year); // 生成查询参数 Map params = (Map) PojoUtils.generalize(qo) ; // 获取符合条件的记录数 Long itemTotal = Optional.ofNullable(rmClientAmountDayLastMapper.getMonthAmountAndMoneyCount(params)).orElse(0L); QueryResultVo> rsVo = new QueryResultVo<>() ; rsVo.pageSize = qo.pageSize ; rsVo.pageCurr = qo.pageCurr ; rsVo.calculateAndSet(itemTotal, params); rsVo.obj = rmClientAmountDayLastMapper.getMonthAmountAndMoney(params); return rsVo ; } }