package com.dy.pipIrrStatistics.client; import com.dy.common.aop.SsoAop; import com.dy.common.webUtil.BaseResponse; import com.dy.common.webUtil.BaseResponseUtils; import com.dy.common.webUtil.QueryResultVo; 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 com.dy.pipIrrStatistics.result.StatisticlResultCode; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import java.util.Objects; /** * @author ZhuBaoMin * @date 2024-08-06 9:43 * @LastEditTime 2024-08-06 9:43 * @Description */ @Slf4j @RestController @RequestMapping(path="statistics") @RequiredArgsConstructor public class ClientCtrl { private final ClientSv clientSv; /** * 获取指定时间段内开阀次数超过指定值的农户 * @param qo * @return */ @GetMapping(path = "/getLargeOpenCountClients") @SsoAop() public BaseResponse>> getLargeOpenCountClients(@Valid OpenCountQO qo, BindingResult bindingResult) { if(bindingResult != null && bindingResult.hasErrors()){ return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } try { return BaseResponseUtils.buildSuccess(clientSv.getLargeOpenCountClients(qo)); } catch (Exception e) { log.error("获取开卡记录异常", e); return BaseResponseUtils.buildException(e.getMessage()) ; } } /** * 获取指定时间段内开阀次数低于指定值的农户 * @param qo * @param bindingResult * @return */ @GetMapping(path = "/getSmallOpenCountClients") @SsoAop() public BaseResponse>> getSmallOpenCountClients(@Valid OpenCountQO qo, BindingResult bindingResult) { if(bindingResult != null && bindingResult.hasErrors()){ return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } try { return BaseResponseUtils.buildSuccess(clientSv.getSmallOpenCountClients(qo)); } catch (Exception e) { log.error("获取开卡记录异常", e); return BaseResponseUtils.buildException(e.getMessage()) ; } } /** * 获取指定时间段内用水量超过指定值的农户 * @param qo * @param bindingResult * @return */ @GetMapping(path = "/getLargeWaterConsumptionClients") @SsoAop() public BaseResponse>> getLargeWaterConsumptionClients(@Valid WaterConsumptionQO qo, BindingResult bindingResult) { if(bindingResult != null && bindingResult.hasErrors()){ return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } try { return BaseResponseUtils.buildSuccess(clientSv.getLargeWaterConsumptionClients(qo)); } catch (Exception e) { log.error("获取开卡记录异常", e); return BaseResponseUtils.buildException(e.getMessage()) ; } } /** * 获取指定时间段内用水量低于指定值的农户 * @param qo * @param bindingResult * @return */ @GetMapping(path = "/getSmallWaterConsumptionClients") @SsoAop() public BaseResponse>> getSmallWaterConsumptionClients(@Valid WaterConsumptionQO qo, BindingResult bindingResult) { if(bindingResult != null && bindingResult.hasErrors()){ return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } try { return BaseResponseUtils.buildSuccess(clientSv.getSmallWaterConsumptionClients(qo)); } catch (Exception e) { log.error("获取记录异常", e); return BaseResponseUtils.buildException(e.getMessage()) ; } } /** * 获取指定时间段内消费金额超过指定值的农户 * @param qo * @param bindingResult * @return */ @GetMapping(path = "/getLargeAmountSpentClients") @SsoAop() public BaseResponse>> getLargeAmountSpentClients(@Valid AmountSpentQO qo, BindingResult bindingResult) { if(bindingResult != null && bindingResult.hasErrors()){ return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } try { return BaseResponseUtils.buildSuccess(clientSv.getLargeAmountSpentClients(qo)); } catch (Exception e) { log.error("获取开卡记录异常", e); return BaseResponseUtils.buildException(e.getMessage()) ; } } /** * 获取指定时间段内消费金额低于指定值的农户 * @param qo * @param bindingResult * @return */ @GetMapping(path = "/getSmallAmountSpentClients") @SsoAop() public BaseResponse>> getSmallAmountSpentClients(@Valid AmountSpentQO qo, BindingResult bindingResult) { if(bindingResult != null && bindingResult.hasErrors()){ return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } try { return BaseResponseUtils.buildSuccess(clientSv.getSmallAmountSpentClients(qo)); } catch (Exception e) { log.error("获取记录异常", e); return BaseResponseUtils.buildException(e.getMessage()) ; } } /** * 获取指定时间段内用水时长超过指定值的农户 * @param qo * @param bindingResult * @return */ @GetMapping(path = "/getLargeWaterDurationClients") @SsoAop() public BaseResponse>> getLargeWaterDurationClients(@Valid WaterDurationQO qo, BindingResult bindingResult) { if(bindingResult != null && bindingResult.hasErrors()){ return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } try { return BaseResponseUtils.buildSuccess(clientSv.getLargeWaterDurationClients(qo)); } catch (Exception e) { log.error("获取开卡记录异常", e); return BaseResponseUtils.buildException(e.getMessage()) ; } } /** * 获取指定时间段内用水时长低于指定值的农户 * @param qo * @param bindingResult * @return */ @GetMapping(path = "/getSmallWaterDurationClients") @SsoAop() public BaseResponse>> getSmallWaterDurationClients(@Valid WaterDurationQO qo, BindingResult bindingResult) { if(bindingResult != null && bindingResult.hasErrors()){ return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } try { return BaseResponseUtils.buildSuccess(clientSv.getSmallWaterDurationClients(qo)); } catch (Exception e) { log.error("获取开卡记录异常", e); return BaseResponseUtils.buildException(e.getMessage()) ; } } /** * 统计指定月份各农户各天用水量及消费金额 * @param qo * @return */ @GetMapping(path = "/getDayAmountAndMoney") @SsoAop() public BaseResponse>> getDayAmountAndMoney(ClientAmountQO qo) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); String yearMonth = qo.getYearMonth(); if(yearMonth == null) { return BaseResponseUtils.buildErrorMsg(StatisticlResultCode.YEAR_AND_MONTH_CANNOT_BE_NULL.getMessage()); }else { yearMonth = yearMonth + "-01"; try { Date date = dateFormat.parse(yearMonth); } catch (Exception e) { return BaseResponseUtils.buildErrorMsg(StatisticlResultCode.YEAR_OR_MONTH_IS_ERROR.getMessage()); } } try { return BaseResponseUtils.buildSuccess(clientSv.getDayAmountAndMoney(qo)); } catch (Exception e) { log.error("获取记录异常", e); return BaseResponseUtils.buildException(e.getMessage()) ; } } /** * 统计指定年份各农户各月用水量及消费金额 * @param qo * @return */ @GetMapping(path = "/getMonthAmountAndMoney") @SsoAop() public BaseResponse>> getMonthAmountAndMoney(ClientAmountQO qo) { if(qo.getYear() == null) { return BaseResponseUtils.buildErrorMsg(StatisticlResultCode.YEAR_CANNOT_BE_NULL.getMessage()); } try { return BaseResponseUtils.buildSuccess(clientSv.getMonthAmountAndMoney(qo)); } catch (Exception e) { log.error("获取记录异常", e); return BaseResponseUtils.buildException(e.getMessage()) ; } } /** * 指定时间段内开物理卡农户 * * @param qo * @return */ @GetMapping(path = "/getOpenIcCardClients") @SsoAop() public BaseResponse>> getOpenIcCardClients(CommonQO qo) { try { QueryResultVo> res = clientSv.getOpenIcCardClients(qo); return BaseResponseUtils.buildSuccess(res); }catch (Exception e){ log.error("获取记录异常", e); return BaseResponseUtils.buildException(e.getMessage()); } } /** * 指定时间段内每个农户充值合计(物理卡) * * @param qo * @return */ @GetMapping(path = "/getRechargeTotalClients") @SsoAop() public BaseResponse>> getRechargeTotalClients(CommonQO qo) { try { QueryResultVo> res = clientSv.getRechargeTotalClients(qo); return BaseResponseUtils.buildSuccess(res); }catch (Exception e){ log.error("获取记录异常", e); return BaseResponseUtils.buildException(e.getMessage()); } } /** * 指定时间段内物理卡充值金额超过指定值的农户 * * @param qo * @return */ @GetMapping(path = "/getRechargeTotalGtValueClients") @SsoAop() public BaseResponse>> getRechargeTotalGtValueClients(RechargeTotalGtValueQo qo) { try { QueryResultVo> res = clientSv.getRechargeTotalGtValueClients(qo); return BaseResponseUtils.buildSuccess(res); }catch (Exception e){ log.error("获取记录异常", e); return BaseResponseUtils.buildException(e.getMessage()); } } /** * 最近未充值的农户 * * @param qo * @return */ @GetMapping(path = "/getNotRechargeLastClients") @SsoAop() public BaseResponse>> getNotRechargeLastClients(CommonQO qo) { try { QueryResultVo> res = clientSv.getNotRechargeLastClients(qo); return BaseResponseUtils.buildSuccess(res); }catch (Exception e){ log.error("获取记录异常", e); return BaseResponseUtils.buildException(e.getMessage()); } } }