package com.dy.pipIrrStatistics.intake; 
 | 
  
 | 
import com.dy.common.aop.SsoAop; 
 | 
import com.dy.common.util.DateTime; 
 | 
import com.dy.common.util.IDLongGenerator; 
 | 
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.intake.qo.*; 
 | 
import com.dy.pipIrrStatistics.result.StatisticlResultCode; 
 | 
import jakarta.validation.Valid; 
 | 
import lombok.RequiredArgsConstructor; 
 | 
import lombok.extern.slf4j.Slf4j; 
 | 
import org.jetbrains.annotations.NotNull; 
 | 
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.time.LocalDate; 
 | 
import java.util.Date; 
 | 
import java.util.List; 
 | 
import java.util.Objects; 
 | 
  
 | 
/** 
 | 
 * @author ZhuBaoMin 
 | 
 * @date 2024-08-01 13:57 
 | 
 * @LastEditTime 2024-08-01 13:57 
 | 
 * @Description 
 | 
 */ 
 | 
  
 | 
@Slf4j 
 | 
@RestController 
 | 
@RequestMapping(path="statistics") 
 | 
@RequiredArgsConstructor 
 | 
public class IntkeCtrl { 
 | 
    private final IntakeSv intakeSv; 
 | 
  
 | 
    /** ok 111 
 | 
     * 获取指定时间段内未上线的取水口 
 | 
     * @param qo 
 | 
     * @return 
 | 
     */ 
 | 
    @GetMapping(path = "/getNotOnlineIntakes") 
 | 
    @SsoAop() 
 | 
    public BaseResponse<QueryResultVo<List<VoIntake>>> getNotOnlineIntakes(@Valid CommonQO qo, BindingResult bindingResult) { 
 | 
        if(bindingResult != null && bindingResult.hasErrors()){ 
 | 
            return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); 
 | 
        } 
 | 
        String timeStart = qo.getTimeStart(); 
 | 
        String timeStop = qo.getTimeStop(); 
 | 
        Long startId = null ; 
 | 
        Long endId = null ; 
 | 
        if(timeStart != null && !timeStart.trim().equals("")){ 
 | 
            int[] ymdStart = DateTime.yyyy_MM_dd_2_ymdGroup(timeStart) ; 
 | 
            startId = IDLongGenerator.generateOneDayStartId(ymdStart[0], ymdStart[1], ymdStart[2]) ; 
 | 
        } 
 | 
        if(timeStop != null && !timeStop.trim().equals("")){ 
 | 
            int[] ymdEnd = DateTime.yyyy_MM_dd_2_ymdGroup(timeStop) ; 
 | 
            endId = IDLongGenerator.generateOneDayEndId(ymdEnd[0], ymdEnd[1], ymdEnd[2]) ; 
 | 
        } 
 | 
        if(startId != null && endId != null){ 
 | 
            if(endId < startId){ 
 | 
                return BaseResponseUtils.buildErrorMsg("结束时间不能早于开始时间"); 
 | 
            } 
 | 
        } 
 | 
        try { 
 | 
            return BaseResponseUtils.buildSuccess(intakeSv.getNotOnlineIntakes(qo, startId, endId)); 
 | 
        } catch (Exception e) { 
 | 
            log.error("获取记录异常", e); 
 | 
            return BaseResponseUtils.buildException(e.getMessage()) ; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** ok 112 
 | 
     * 最近未报数的取水口 
 | 
     * @param 
 | 
     * @return 
 | 
     */ 
 | 
    @GetMapping(path = "/getUnReportedIntakes") 
 | 
    @SsoAop() 
 | 
    public BaseResponse<QueryResultVo<List<VoIntakeUnReported>>> getUnReportedIntakes(@Valid CommonQO qo, BindingResult bindingResult) { 
 | 
        if(bindingResult != null && bindingResult.hasErrors()){ 
 | 
            return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); 
 | 
        } 
 | 
        String timeStart = qo.getTimeStart(); 
 | 
        if(timeStart != null && !timeStart.trim().equals("")) { 
 | 
            qo.setTimeStart(timeStart + " 00:00:00") ; 
 | 
        } 
 | 
        try { 
 | 
            QueryResultVo<List<VoIntakeUnReported>> res = intakeSv.getUnReportedIntakes(qo); 
 | 
            return BaseResponseUtils.buildSuccess(res); 
 | 
        } catch (Exception e) { 
 | 
            log.error("获取记录异常", e); 
 | 
            return BaseResponseUtils.buildException(e.getMessage()) ; 
 | 
        } 
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
    /** ok 113 
 | 
     * 获取从未开过阀的取水口 
 | 
     * @param 
 | 
     * @return 
 | 
     */ 
 | 
    @GetMapping(path = "/getNeverOpenValveIntakes") 
 | 
    @SsoAop() 
 | 
    public BaseResponse<QueryResultVo<List<VoIntakeUnOpenValve>>> getNeverOpenValveIntakes(@Valid CommonQO qo, BindingResult bindingResult) { 
 | 
        if(bindingResult != null && bindingResult.hasErrors()){ 
 | 
            return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); 
 | 
        } 
 | 
        String timeStart = qo.getTimeStart(); 
 | 
        String timeStop = qo.getTimeStop(); 
 | 
        Long startId = null ; 
 | 
        Long endId = null ; 
 | 
        if(timeStart != null && !timeStart.trim().equals("")){ 
 | 
            int[] ymdStart = DateTime.yyyy_MM_dd_2_ymdGroup(timeStart) ; 
 | 
            startId = IDLongGenerator.generateOneDayStartId(ymdStart[0], ymdStart[1], ymdStart[2]) ; 
 | 
        } 
 | 
        if(timeStop != null && !timeStop.trim().equals("")){ 
 | 
            int[] ymdEnd = DateTime.yyyy_MM_dd_2_ymdGroup(timeStop) ; 
 | 
            endId = IDLongGenerator.generateOneDayEndId(ymdEnd[0], ymdEnd[1], ymdEnd[2]) ; 
 | 
        } 
 | 
        if(startId != null && endId != null){ 
 | 
            if(endId < startId){ 
 | 
                return BaseResponseUtils.buildErrorMsg("结束时间不能早于开始时间"); 
 | 
            } 
 | 
        } 
 | 
        try { 
 | 
            QueryResultVo<List<VoIntakeUnOpenValve>> res = intakeSv.getNeverOpenValveIntakes(qo, startId, endId) ; 
 | 
            return BaseResponseUtils.buildSuccess(res); 
 | 
        } catch (Exception e) { 
 | 
            log.error("获取记录异常", e); 
 | 
            return BaseResponseUtils.buildException(e.getMessage()) ; 
 | 
        } 
 | 
    } 
 | 
  
 | 
  
 | 
    /** ok 1 
 | 
     * 获取累计流量超过指定值的取水口 
 | 
     * @param qo 
 | 
     * @return 
 | 
     */ 
 | 
    @GetMapping(path = "/getLargeFlowIntakes") 
 | 
    @SsoAop() 
 | 
    public BaseResponse<QueryResultVo<List<VoCumulativeFlow>>> getLargeFlowIntakes(@Valid CumulativeFlowQO qo, BindingResult bindingResult) { 
 | 
        if(bindingResult != null && bindingResult.hasErrors()){ 
 | 
            return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); 
 | 
        } 
 | 
        try { 
 | 
            return BaseResponseUtils.buildSuccess(intakeSv.getLargeFlowIntakes(qo)); 
 | 
        } catch (Exception e) { 
 | 
            log.error("获取记录异常", e); 
 | 
            return BaseResponseUtils.buildException(e.getMessage()) ; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** ok 2 
 | 
     * 获取累计流量低于指定值的取水口 
 | 
     * @param qo 
 | 
     * @return 
 | 
     */ 
 | 
    @GetMapping(path = "/getSmallFlowIntakes") 
 | 
    @SsoAop() 
 | 
    public BaseResponse<QueryResultVo<List<VoCumulativeFlow>>> getSmallFlowIntakes(@Valid CumulativeFlowQO qo, BindingResult bindingResult) { 
 | 
        if(bindingResult != null && bindingResult.hasErrors()){ 
 | 
            return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); 
 | 
        } 
 | 
        try { 
 | 
            return BaseResponseUtils.buildSuccess(intakeSv.getSmallFlowIntakes(qo)); 
 | 
        } catch (Exception e) { 
 | 
            log.error("获取记录异常", e); 
 | 
            return BaseResponseUtils.buildException(e.getMessage()) ; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** ok 114 
 | 
     * 获取欠压取水口 
 | 
     * @param qo 
 | 
     * @return 
 | 
     */ 
 | 
    @GetMapping(path = "/getUnderVoltIntakes") 
 | 
    @SsoAop() 
 | 
    public BaseResponse<QueryResultVo<List<VoBatteryVolt>>> getUnderVoltIntakes(@Valid BatteryVoltQO qo, BindingResult bindingResult) { 
 | 
        if(bindingResult != null && bindingResult.hasErrors()){ 
 | 
            return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); 
 | 
        } 
 | 
        try { 
 | 
            return BaseResponseUtils.buildSuccess(intakeSv.getUnderVoltIntakes(qo)); 
 | 
        } catch (Exception e) { 
 | 
            log.error("获取记录异常", e); 
 | 
            return BaseResponseUtils.buildException(e.getMessage()) ; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** ok 115 
 | 
     * 获取指定信号强度的取水口 
 | 
     * @param qo 
 | 
     * @return 
 | 
     */ 
 | 
    @GetMapping(path = "/getSpecifiedSignalIntakes") 
 | 
    @SsoAop() 
 | 
    public BaseResponse<QueryResultVo<List<VoSignalIntensity>>> getSpecifiedSignalIntakes(@Valid SignalIntensityQO qo, BindingResult bindingResult) { 
 | 
        if(bindingResult != null && bindingResult.hasErrors()){ 
 | 
            return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); 
 | 
        } 
 | 
        try { 
 | 
            return BaseResponseUtils.buildSuccess(intakeSv.getSpecifiedSignalIntakes(qo)); 
 | 
        } catch (Exception e) { 
 | 
            log.error("获取记录异常", e); 
 | 
            return BaseResponseUtils.buildException(e.getMessage()) ; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** ok 11 
 | 
     * 根据开阀类型获取操作次数 
 | 
     * @param qo 
 | 
     * @return 
 | 
     */ 
 | 
    @GetMapping(path = "/getCountByOpenType") 
 | 
    @SsoAop() 
 | 
    public BaseResponse<QueryResultVo<VoCountOfOpenType>> getCountByOpenType(@Valid OpenTypeQO qo, BindingResult bindingResult) throws Exception{ 
 | 
        if(bindingResult != null && bindingResult.hasErrors()){ 
 | 
            return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); 
 | 
        } 
 | 
        String timeStart = qo.getTimeStart(); 
 | 
        String timeStop = qo.getTimeStop(); 
 | 
        if(timeStart == null || timeStart.trim().equals("")){ 
 | 
            return BaseResponseUtils.buildErrorMsg("请设置查询开始时间"); 
 | 
        } 
 | 
        if(timeStop == null || timeStop.trim().equals("")){ 
 | 
            return BaseResponseUtils.buildErrorMsg("请设置查询结束时间"); 
 | 
        } 
 | 
        long dur = DateTime.daysBetweenyyyy_MM_dd(timeStop, timeStart) ; 
 | 
        if(dur < 0){ 
 | 
            return BaseResponseUtils.buildErrorMsg("结束时间不能早于开始时间"); 
 | 
        } 
 | 
        if(dur > 366){ 
 | 
            return BaseResponseUtils.buildErrorMsg("时间跨度不能超过一年"); 
 | 
        } 
 | 
        int[] ymdStart = DateTime.yyyy_MM_dd_2_ymdGroup(timeStart) ; 
 | 
        int[] ymdEnd = DateTime.yyyy_MM_dd_2_ymdGroup(timeStop) ; 
 | 
        long startId = IDLongGenerator.generateOneDayStartId(ymdStart[0], ymdStart[1], ymdStart[2]) ; 
 | 
        long endId = IDLongGenerator.generateOneDayEndId(ymdEnd[0], ymdEnd[1], ymdEnd[2]) ; 
 | 
        try { 
 | 
            return BaseResponseUtils.buildSuccess(intakeSv.getCountByOpenType(startId, endId, qo.getOpenType())); 
 | 
        } catch (Exception e) { 
 | 
            log.error("获取记录异常", e); 
 | 
            return BaseResponseUtils.buildException(e.getMessage()) ; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** ok 12 
 | 
     * 根据关阀类型获取操作次数 
 | 
     * @param qo 
 | 
     * @return 
 | 
     */ 
 | 
    @GetMapping(path = "/getCountByCloseType") 
 | 
    @SsoAop() 
 | 
    public BaseResponse<QueryResultVo<VoCountOfCloseType>> getCountByCloseType(@Valid CloseTypeQo qo, BindingResult bindingResult) throws Exception{ 
 | 
        if(bindingResult != null && bindingResult.hasErrors()){ 
 | 
            return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); 
 | 
        } 
 | 
        String timeStart = qo.getTimeStart(); 
 | 
        String timeStop = qo.getTimeStop(); 
 | 
        if(timeStart == null || timeStart.trim().equals("")){ 
 | 
            return BaseResponseUtils.buildErrorMsg("请设置查询开始时间"); 
 | 
        } 
 | 
        if(timeStop == null || timeStop.trim().equals("")){ 
 | 
            return BaseResponseUtils.buildErrorMsg("请设置查询结束时间"); 
 | 
        } 
 | 
        long dur = DateTime.daysBetweenyyyy_MM_dd(timeStop, timeStart) ; 
 | 
        if(dur < 0){ 
 | 
            return BaseResponseUtils.buildErrorMsg("结束时间不能早于开始时间"); 
 | 
        } 
 | 
        if(dur > 366){ 
 | 
            return BaseResponseUtils.buildErrorMsg("时间跨度不能超过一年"); 
 | 
        } 
 | 
        int[] ymdStart = DateTime.yyyy_MM_dd_2_ymdGroup(timeStart) ; 
 | 
        int[] ymdEnd = DateTime.yyyy_MM_dd_2_ymdGroup(timeStop) ; 
 | 
        long startId = IDLongGenerator.generateOneDayStartId(ymdStart[0], ymdStart[1], ymdStart[2]) ; 
 | 
        long endId = IDLongGenerator.generateOneDayEndId(ymdEnd[0], ymdEnd[1], ymdEnd[2]) ; 
 | 
        try { 
 | 
            return BaseResponseUtils.buildSuccess(intakeSv.getCountByCloseType(startId, endId, qo.getCloseType())); 
 | 
        } catch (Exception e) { 
 | 
            log.error("获取记录异常", e); 
 | 
            return BaseResponseUtils.buildException(e.getMessage()) ; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** ok 13 
 | 
     * 获取指定时间段内开阀次数超过指定值的取水口 
 | 
     * @param 
 | 
     * @return 
 | 
     */ 
 | 
    @GetMapping(path = "/getOpenValveGtIntakes") 
 | 
    @SsoAop() 
 | 
    public BaseResponse<QueryResultVo<List<VoIntakeOpenCount>>> getOpenValveGtIntakes(@Valid IntakeCountValueQO qo, BindingResult bindingResult) throws Exception { 
 | 
        if(bindingResult != null && bindingResult.hasErrors()){ 
 | 
            return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); 
 | 
        } 
 | 
        String timeStart = qo.getTimeStart(); 
 | 
        String timeStop = qo.getTimeStop(); 
 | 
        if(timeStart == null || timeStart.trim().equals("")){ 
 | 
            return BaseResponseUtils.buildErrorMsg("请设置查询开始时间"); 
 | 
        } 
 | 
        if(timeStop == null || timeStop.trim().equals("")){ 
 | 
            return BaseResponseUtils.buildErrorMsg("请设置查询结束时间"); 
 | 
        } 
 | 
        long dur = DateTime.daysBetweenyyyy_MM_dd(timeStop, timeStart) ; 
 | 
        if(dur < 0){ 
 | 
            return BaseResponseUtils.buildErrorMsg("结束时间不能早于开始时间"); 
 | 
        } 
 | 
        if(dur > 366){ 
 | 
            return BaseResponseUtils.buildErrorMsg("时间跨度不能超过一年"); 
 | 
        } 
 | 
        int[] ymdStart = DateTime.yyyy_MM_dd_2_ymdGroup(timeStart) ; 
 | 
        int[] ymdEnd = DateTime.yyyy_MM_dd_2_ymdGroup(timeStop) ; 
 | 
        qo.idStart = IDLongGenerator.generateOneDayStartId(ymdStart[0], ymdStart[1], ymdStart[2]) ; 
 | 
        qo.idEnd = IDLongGenerator.generateOneDayEndId(ymdEnd[0], ymdEnd[1], ymdEnd[2]) ; 
 | 
        try { 
 | 
            QueryResultVo<List<VoIntakeOpenCount>> res = intakeSv.getOpenValveGtIntakes(qo); 
 | 
            return BaseResponseUtils.buildSuccess(res); 
 | 
        } catch (Exception e) { 
 | 
            log.error("获取记录异常", e); 
 | 
            return BaseResponseUtils.buildException(e.getMessage()) ; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** ok 14 
 | 
     * 获取指定时间段内开阀次数低于指定值的取水口 
 | 
     * @param 
 | 
     * @return 
 | 
     */ 
 | 
    @GetMapping(path = "/getOpenValveLtIntakes") 
 | 
    @SsoAop() 
 | 
    public BaseResponse<QueryResultVo<List<VoIntakeOpenCount>>> getOpenValveLtIntakes(@Valid IntakeCountValueQO qo, BindingResult bindingResult) throws Exception { 
 | 
        if(bindingResult != null && bindingResult.hasErrors()){ 
 | 
            return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); 
 | 
        } 
 | 
        String timeStart = qo.getTimeStart(); 
 | 
        String timeStop = qo.getTimeStop(); 
 | 
        if(timeStart == null || timeStart.trim().equals("")){ 
 | 
            return BaseResponseUtils.buildErrorMsg("请设置查询开始时间"); 
 | 
        } 
 | 
        if(timeStop == null || timeStop.trim().equals("")){ 
 | 
            return BaseResponseUtils.buildErrorMsg("请设置查询结束时间"); 
 | 
        } 
 | 
        long dur = DateTime.daysBetweenyyyy_MM_dd(timeStop, timeStart) ; 
 | 
        if(dur < 0){ 
 | 
            return BaseResponseUtils.buildErrorMsg("结束时间不能早于开始时间"); 
 | 
        } 
 | 
        if(dur > 366){ 
 | 
            return BaseResponseUtils.buildErrorMsg("时间跨度不能超过一年"); 
 | 
        } 
 | 
        int[] ymdStart = DateTime.yyyy_MM_dd_2_ymdGroup(timeStart) ; 
 | 
        int[] ymdEnd = DateTime.yyyy_MM_dd_2_ymdGroup(timeStop) ; 
 | 
        qo.idStart = IDLongGenerator.generateOneDayStartId(ymdStart[0], ymdStart[1], ymdStart[2]) ; 
 | 
        qo.idEnd = IDLongGenerator.generateOneDayEndId(ymdEnd[0], ymdEnd[1], ymdEnd[2]) ; 
 | 
        try { 
 | 
            QueryResultVo<List<VoIntakeOpenCount>> res = intakeSv.getOpenValveLtIntakes(qo); 
 | 
            return BaseResponseUtils.buildSuccess(res); 
 | 
        } catch (Exception e) { 
 | 
            log.error("获取记录异常", e); 
 | 
            return BaseResponseUtils.buildException(e.getMessage()) ; 
 | 
        } 
 | 
    } 
 | 
  
 | 
  
 | 
    /** 
 | 
     * 指定时间段内累积流量(定时报里的累积流量)超过指定值的取水口 
 | 
     * @param 
 | 
     * @return 
 | 
     */ 
 | 
    @GetMapping(path = "/getTotalFlowGtValueIntakes") 
 | 
    @SsoAop() 
 | 
    public BaseResponse<QueryResultVo<List<VoIntakeAccumulateAmount>>> getTotalFlowGtValueIntakes(IntakeAmountValueQO qo) { 
 | 
        try { 
 | 
            QueryResultVo<List<VoIntakeAccumulateAmount>> res = intakeSv.getTotalFlowGtValueIntakes(qo); 
 | 
            return BaseResponseUtils.buildSuccess(res); 
 | 
        } catch (Exception e) { 
 | 
            log.error("获取记录异常", e); 
 | 
            return BaseResponseUtils.buildException(e.getMessage()) ; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** ok 3 
 | 
     * 指定时间段内用水量超过指定值的取水口 
 | 
     * @param 
 | 
     * @return 
 | 
     */ 
 | 
    @GetMapping(path = "/getUseWaterGtValueIntakes") 
 | 
    @SsoAop() 
 | 
    public BaseResponse<QueryResultVo<List<VoIntakeAccumulateAmount>>> getUseWaterGtValueIntakes(IntakeAmountValueQO qo) { 
 | 
        try { 
 | 
            QueryResultVo<List<VoIntakeAccumulateAmount>> res = intakeSv.getUseWaterGtValueIntakes(qo); 
 | 
            return BaseResponseUtils.buildSuccess(res); 
 | 
        } catch (Exception e) { 
 | 
            log.error("获取记录异常", e); 
 | 
            return BaseResponseUtils.buildException(e.getMessage()) ; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** ok 4 
 | 
     * 指定时间段内消费金额超过指定值的取水口 
 | 
     * @param 
 | 
     * @return 
 | 
     */ 
 | 
    @GetMapping(path = "/getExpenseGtValueIntakes") 
 | 
    @SsoAop() 
 | 
    public BaseResponse<QueryResultVo<List<VoIntakeAccumulateAmount>>> getExpenseGtValueIntakes(IntakeAmountValueQO qo) { 
 | 
        try { 
 | 
            QueryResultVo<List<VoIntakeAccumulateAmount>> res = intakeSv.getExpenseGtValueIntakes(qo); 
 | 
            return BaseResponseUtils.buildSuccess(res); 
 | 
        } catch (Exception e) { 
 | 
            log.error("获取记录异常", e); 
 | 
            return BaseResponseUtils.buildException(e.getMessage()) ; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 指定时间段内用水次数超过指定值的取水口 
 | 
     * @param 
 | 
     * @return 
 | 
     */ 
 | 
    @GetMapping(path = "/getUseWaterTimesGtValueIntakes") 
 | 
    @SsoAop() 
 | 
    public BaseResponse<QueryResultVo<List<VoIntakeAccumulateAmount>>> getUseWaterTimesGtValueIntakes(IntakeCountValueQO qo) { 
 | 
        try { 
 | 
            QueryResultVo<List<VoIntakeAccumulateAmount>> res = intakeSv.getUseWaterTimesGtValueIntakes(qo); 
 | 
            return BaseResponseUtils.buildSuccess(res); 
 | 
        } catch (Exception e) { 
 | 
            log.error("获取记录异常", e); 
 | 
            return BaseResponseUtils.buildException(e.getMessage()) ; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 指定时间段内用水时长超过指定值的取水口 
 | 
     * @param 
 | 
     * @return 
 | 
     */ 
 | 
    @GetMapping(path = "/getUseWaterDurationGtValueIntakes") 
 | 
    @SsoAop() 
 | 
    public BaseResponse<QueryResultVo<List<VoIntakeOpenCount>>> getUseWaterDurationGtValueIntakes(IntakeCountValueQO qo) { 
 | 
        try { 
 | 
            QueryResultVo<List<VoIntakeOpenCount>> res = intakeSv.getUseWaterDurationGtValueIntakes(qo); 
 | 
            return BaseResponseUtils.buildSuccess(res); 
 | 
        } catch (Exception e) { 
 | 
            log.error("获取记录异常", e); 
 | 
            return BaseResponseUtils.buildException(e.getMessage()) ; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** ok 15 
 | 
     * 指定时间段 有开阀 无关阀的取水口 
 | 
     * @param 
 | 
     * @return 
 | 
     */ 
 | 
    @GetMapping(path = "/getHaveOpenNoCloseIntakes") 
 | 
    @SsoAop() 
 | 
    public BaseResponse<QueryResultVo<List<VoIntake>>> getHaveOpenNoCloseIntakes(IntakeCountValueQO qo) throws Exception { 
 | 
        String timeStart = qo.getTimeStart(); 
 | 
        String timeStop = qo.getTimeStop(); 
 | 
        if(timeStart == null || timeStart.trim().equals("")){ 
 | 
            return BaseResponseUtils.buildErrorMsg("请设置查询开始时间"); 
 | 
        } 
 | 
        if(timeStop == null || timeStop.trim().equals("")){ 
 | 
            return BaseResponseUtils.buildErrorMsg("请设置查询结束时间"); 
 | 
        } 
 | 
        long dur = DateTime.daysBetweenyyyy_MM_dd(timeStop, timeStart) ; 
 | 
        if(dur < 0){ 
 | 
            return BaseResponseUtils.buildErrorMsg("结束时间不能早于开始时间"); 
 | 
        } 
 | 
        if(dur > 366){ 
 | 
            return BaseResponseUtils.buildErrorMsg("时间跨度不能超过一年"); 
 | 
        } 
 | 
        int[] ymdStart = DateTime.yyyy_MM_dd_2_ymdGroup(timeStart) ; 
 | 
        int[] ymdEnd = DateTime.yyyy_MM_dd_2_ymdGroup(timeStop) ; 
 | 
        qo.idStart = IDLongGenerator.generateOneDayStartId(ymdStart[0], ymdStart[1], ymdStart[2]) ; 
 | 
        qo.idEnd = IDLongGenerator.generateOneDayEndId(ymdEnd[0], ymdEnd[1], ymdEnd[2]) ; 
 | 
        try { 
 | 
            QueryResultVo<List<VoIntake>> res = intakeSv.getHaveOpenNoCloseIntakes(qo); 
 | 
            return BaseResponseUtils.buildSuccess(res); 
 | 
        } catch (Exception e) { 
 | 
            log.error("获取记录异常", e); 
 | 
            return BaseResponseUtils.buildException(e.getMessage()) ; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** ok 16 
 | 
     * 指定时间段 无开阀 有关阀的取水口 
 | 
     * @param 
 | 
     * @return 
 | 
     */ 
 | 
    @GetMapping(path = "/getNoOpenHaveCloseIntakes") 
 | 
    @SsoAop() 
 | 
    public BaseResponse<QueryResultVo<List<VoIntake>>> getNoOpenHaveCloseIntakes(IntakeCountValueQO qo) throws Exception { 
 | 
        String timeStart = qo.getTimeStart(); 
 | 
        String timeStop = qo.getTimeStop(); 
 | 
        if(timeStart == null || timeStart.trim().equals("")){ 
 | 
            return BaseResponseUtils.buildErrorMsg("请设置查询开始时间"); 
 | 
        } 
 | 
        if(timeStop == null || timeStop.trim().equals("")){ 
 | 
            return BaseResponseUtils.buildErrorMsg("请设置查询结束时间"); 
 | 
        } 
 | 
        long dur = DateTime.daysBetweenyyyy_MM_dd(timeStop, timeStart) ; 
 | 
        if(dur < 0){ 
 | 
            return BaseResponseUtils.buildErrorMsg("结束时间不能早于开始时间"); 
 | 
        } 
 | 
        if(dur > 366){ 
 | 
            return BaseResponseUtils.buildErrorMsg("时间跨度不能超过一年"); 
 | 
        } 
 | 
        int[] ymdStart = DateTime.yyyy_MM_dd_2_ymdGroup(timeStart) ; 
 | 
        int[] ymdEnd = DateTime.yyyy_MM_dd_2_ymdGroup(timeStop) ; 
 | 
        qo.idStart = IDLongGenerator.generateOneDayStartId(ymdStart[0], ymdStart[1], ymdStart[2]) ; 
 | 
        qo.idEnd = IDLongGenerator.generateOneDayEndId(ymdEnd[0], ymdEnd[1], ymdEnd[2]) ; 
 | 
        try { 
 | 
            QueryResultVo<List<VoIntake>> res = intakeSv.getNoOpenHaveCloseIntakes(qo); 
 | 
            return BaseResponseUtils.buildSuccess(res); 
 | 
        } catch (Exception e) { 
 | 
            log.error("获取记录异常", e); 
 | 
            return BaseResponseUtils.buildException(e.getMessage()) ; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 统计指定月份各天用水量 
 | 
     * @param qo 
 | 
     * @return 
 | 
     */ 
 | 
    @GetMapping(path = "/getDayIntakeAmount") 
 | 
    @SsoAop() 
 | 
    public BaseResponse<QueryResultVo<List<VoDayIntakeAmount>>> getDayIntakeAmount(@NotNull IntakeAmountQO 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(intakeSv.getDayIntakeAmount(qo)); 
 | 
        } catch (Exception e) { 
 | 
            log.error("获取记录异常", e); 
 | 
            return BaseResponseUtils.buildException(e.getMessage()) ; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 统计指定年份各月用水量 
 | 
     * @param qo 
 | 
     * @return 
 | 
     */ 
 | 
    @GetMapping(path = "/getMonthIntakeAmount") 
 | 
    @SsoAop() 
 | 
    public BaseResponse<QueryResultVo<List<VoMonthAmount>>> getMonthIntakeAmount(IntakeAmountQO qo) { 
 | 
        if(qo.getYear() == null) { 
 | 
            return BaseResponseUtils.buildErrorMsg(StatisticlResultCode.YEAR_CANNOT_BE_NULL.getMessage()); 
 | 
        } 
 | 
        try { 
 | 
            return BaseResponseUtils.buildSuccess(intakeSv.getMonthIntakeAmount(qo)); 
 | 
        } catch (Exception e) { 
 | 
            log.error("获取记录异常", e); 
 | 
            return BaseResponseUtils.buildException(e.getMessage()) ; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 统计指定月份各天漏损量 
 | 
     * @param qo 
 | 
     * @return 
 | 
     */ 
 | 
    @GetMapping(path = "/getDayLossAmount") 
 | 
    @SsoAop() 
 | 
    public BaseResponse<QueryResultVo<List<VoDayLoss>>> getDayLossAmount(IntakeAmountQO 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(intakeSv.getDayLossAmount(qo)); 
 | 
        } catch (Exception e) { 
 | 
            log.error("获取记录异常", e); 
 | 
            return BaseResponseUtils.buildException(e.getMessage()) ; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 统计指定年份各月漏损量 
 | 
     * @param qo 
 | 
     * @return 
 | 
     */ 
 | 
    @GetMapping(path = "/getMonthLossAmount") 
 | 
    @SsoAop() 
 | 
    public BaseResponse<QueryResultVo<List<VoMonthAmount>>> getMonthLossAmount(IntakeAmountQO qo) { 
 | 
        if(qo.getYear() == null) { 
 | 
            return BaseResponseUtils.buildErrorMsg(StatisticlResultCode.YEAR_CANNOT_BE_NULL.getMessage()); 
 | 
        } 
 | 
        try { 
 | 
            return BaseResponseUtils.buildSuccess(intakeSv.getMonthLossAmount(qo)); 
 | 
        } catch (Exception e) { 
 | 
            log.error("获取记录异常", e); 
 | 
            return BaseResponseUtils.buildException(e.getMessage()) ; 
 | 
        } 
 | 
    } 
 | 
  
 | 
} 
 |