package com.dy.pipIrrIrrigate.irrigatePlan; 
 | 
  
 | 
import com.dy.common.aop.SsoAop; 
 | 
import com.dy.common.webUtil.BaseResponse; 
 | 
import com.dy.common.webUtil.BaseResponseUtils; 
 | 
import com.dy.common.webUtil.QueryConditionVo; 
 | 
import com.dy.common.webUtil.QueryResultVo; 
 | 
import com.dy.pipIrrGlobal.voIr.VoPlanDetails; 
 | 
import com.dy.pipIrrGlobal.voIr.VoPlans; 
 | 
import com.dy.pipIrrIrrigate.irrigatePlan.dto.IrrigatePlan; 
 | 
import com.dy.pipIrrIrrigate.irrigatePlan.dto.PlanSimple; 
 | 
import jakarta.validation.Valid; 
 | 
import lombok.RequiredArgsConstructor; 
 | 
import lombok.extern.slf4j.Slf4j; 
 | 
import org.springframework.http.MediaType; 
 | 
import org.springframework.validation.BindingResult; 
 | 
import org.springframework.web.bind.annotation.*; 
 | 
  
 | 
import java.util.List; 
 | 
import java.util.Map; 
 | 
import java.util.Objects; 
 | 
  
 | 
/** 
 | 
 * @author ZhuBaoMin 
 | 
 * @date 2025-06-30 14:58 
 | 
 * @LastEditTime 2025-06-30 14:58 
 | 
 * @Description 
 | 
 */ 
 | 
  
 | 
@Slf4j 
 | 
@RestController 
 | 
@RequestMapping(path = "plan") 
 | 
@RequiredArgsConstructor 
 | 
public class IrrigatePlanCtrl { 
 | 
    private final IrrigatePlanSv irrigatePlanSv; 
 | 
  
 | 
    /** 
 | 
     * 创建灌溉计划 
 | 
     * @param planAndSchedule 
 | 
     * @param bindingResult 
 | 
     * @return 
 | 
     */ 
 | 
    @PostMapping(path = "createPlan", consumes = MediaType.APPLICATION_JSON_VALUE) 
 | 
    @SsoAop() 
 | 
    public BaseResponse<Boolean> createPlan(@RequestBody @Valid IrrigatePlan planAndSchedule, BindingResult bindingResult){ 
 | 
        if(bindingResult != null && bindingResult.hasErrors()){ 
 | 
            return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); 
 | 
        } 
 | 
  
 | 
        Map map_result = irrigatePlanSv.createPlan(planAndSchedule); 
 | 
        if(map_result.get("success").equals(false)) { 
 | 
            return BaseResponseUtils.buildErrorMsg(map_result.get("msg").toString()); 
 | 
        } 
 | 
        return BaseResponseUtils.buildSuccess() ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 删除灌溉计划 
 | 
     * @param planSimple 
 | 
     * @param bindingResult 
 | 
     * @return 
 | 
     */ 
 | 
    @PostMapping(path = "deletePlan") 
 | 
    @SsoAop() 
 | 
    public BaseResponse<Boolean> deletePlan(@RequestBody @Valid PlanSimple planSimple, BindingResult bindingResult) { 
 | 
        if(bindingResult != null && bindingResult.hasErrors()){ 
 | 
            return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); 
 | 
        } 
 | 
  
 | 
        Map map_result = irrigatePlanSv.deletePlan(planSimple); 
 | 
        if(map_result.get("success").equals(false)) { 
 | 
            return BaseResponseUtils.buildErrorMsg(map_result.get("msg").toString()); 
 | 
        } 
 | 
        return BaseResponseUtils.buildSuccess() ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 发布灌溉计划 
 | 
     * 1. 修改灌溉计划状态为发布状态 
 | 
     * 2. 添加灌溉计划操作记录 
 | 
     * 3. 生成开阀计划 
 | 
     * @param planSimple 
 | 
     * @param bindingResult 
 | 
     * @return 
 | 
     */ 
 | 
    @PostMapping(path = "publishPlan", consumes = MediaType.APPLICATION_JSON_VALUE) 
 | 
    @SsoAop() 
 | 
    public BaseResponse<Boolean> publishPlan(@RequestBody @Valid PlanSimple planSimple, BindingResult bindingResult){ 
 | 
        if(bindingResult != null && bindingResult.hasErrors()){ 
 | 
            return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); 
 | 
        } 
 | 
  
 | 
        Map map_result = irrigatePlanSv.publishPlan(planSimple); 
 | 
        if(map_result.get("success").equals(false)) { 
 | 
            return BaseResponseUtils.buildErrorMsg(map_result.get("msg").toString()); 
 | 
        } 
 | 
        return BaseResponseUtils.buildSuccess() ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 终止灌溉计划 
 | 
     * @param planSimple 
 | 
     * @param bindingResult 
 | 
     * @return 
 | 
     */ 
 | 
    @PostMapping(path = "terminatePlan", consumes = MediaType.APPLICATION_JSON_VALUE) 
 | 
    @SsoAop() 
 | 
    public BaseResponse<Boolean> terminatePlan(@RequestBody @Valid PlanSimple planSimple, BindingResult bindingResult){ 
 | 
        if(bindingResult != null && bindingResult.hasErrors()){ 
 | 
            return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); 
 | 
        } 
 | 
  
 | 
        Map map_result = irrigatePlanSv.terminatePlan(planSimple); 
 | 
        if(map_result.get("success").equals(false)) { 
 | 
            return BaseResponseUtils.buildErrorMsg(map_result.get("msg").toString()); 
 | 
        } 
 | 
        return BaseResponseUtils.buildSuccess() ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 获取未完成的计划列表,灌溉模块计划列表页使用 
 | 
     * @return 
 | 
     */ 
 | 
    @GetMapping(path = "/getNotCompletePlans") 
 | 
    @SsoAop() 
 | 
    public BaseResponse<List<VoPlans>> getNotCompletePlans() { 
 | 
        try { 
 | 
            List<VoPlans> res = irrigatePlanSv.getNotCompletePlans(); 
 | 
            return BaseResponseUtils.buildSuccess(res); 
 | 
        } catch (Exception e) { 
 | 
            log.error("获取未完的计划异常", e); 
 | 
            return BaseResponseUtils.buildException(e.getMessage()); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 获取已完成的计划列表,灌溉模块计划列表页使用 
 | 
     * @return 
 | 
     */ 
 | 
    @GetMapping(path = "/getCompletedPlans") 
 | 
    @SsoAop() 
 | 
    public BaseResponse<QueryResultVo<List<VoPlans>>> getCompletedPlans(QueryConditionVo qo) { 
 | 
        try { 
 | 
            return BaseResponseUtils.buildSuccess(irrigatePlanSv.getCompletedPlans(qo)); 
 | 
        } catch (Exception e) { 
 | 
            log.error("获取项目记录异常", e); 
 | 
            return BaseResponseUtils.buildException(e.getMessage()); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 根据计划ID获取计划发布结果 
 | 
     * @param planId 
 | 
     * @return 
 | 
     */ 
 | 
    @GetMapping(path = "/getPublishResults") 
 | 
    @SsoAop() 
 | 
    public BaseResponse<VoPlanDetails> getPublishResults(@RequestParam Long planId) { 
 | 
        if(planId == null) { 
 | 
            return BaseResponseUtils.buildErrorMsg("计划ID不能为空"); 
 | 
        } 
 | 
  
 | 
        try { 
 | 
            VoPlanDetails res = irrigatePlanSv.getPublishResults(planId); 
 | 
            return BaseResponseUtils.buildSuccess(res); 
 | 
        } catch (Exception e) { 
 | 
            log.error("获取计划发布结果异常", e); 
 | 
            return BaseResponseUtils.buildException(e.getMessage()); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 根据计划ID获取计划终止操作结果 
 | 
     * @param planId 
 | 
     * @return 
 | 
     */ 
 | 
    @GetMapping(path = "/getTerminateResults") 
 | 
    @SsoAop() 
 | 
    public BaseResponse<VoPlanDetails> getTerminateResults(@RequestParam Long planId) { 
 | 
        if(planId == null) { 
 | 
            return BaseResponseUtils.buildErrorMsg("计划ID不能为空"); 
 | 
        } 
 | 
  
 | 
        try { 
 | 
            VoPlanDetails res = irrigatePlanSv.getTerminateResults(planId); 
 | 
            return BaseResponseUtils.buildSuccess(res); 
 | 
        } catch (Exception e) { 
 | 
            log.error("获取计划发布结果异常", e); 
 | 
            return BaseResponseUtils.buildException(e.getMessage()); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 根据计划ID获取计划最新状态 
 | 
     * @param planId 
 | 
     * @return 
 | 
     */ 
 | 
    @GetMapping(path = "/getPlanLatestState") 
 | 
    @SsoAop() 
 | 
    public BaseResponse<Integer> getPlanLatestState(@RequestParam Long planId) { 
 | 
        if(planId == null) { 
 | 
            return BaseResponseUtils.buildErrorMsg("计划ID不能为空"); 
 | 
        } 
 | 
  
 | 
        try { 
 | 
            return BaseResponseUtils.buildSuccess(irrigatePlanSv.getPlanLatestState(planId)); 
 | 
        } catch (Exception e) { 
 | 
            log.error("获取未完的计划异常", e); 
 | 
            return BaseResponseUtils.buildException(e.getMessage()); 
 | 
        } 
 | 
    } 
 | 
} 
 |