liurunyu
2025-03-03 f77e9a7cfbe775523551df5faab3c70a5a9c190c
pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanCtrl.java
@@ -2,25 +2,25 @@
import com.dy.common.webUtil.BaseResponse;
import com.dy.common.webUtil.BaseResponseUtils;
import com.dy.common.webUtil.QueryResultVo;
import com.dy.pipIrrGlobal.pojoIr.IrIrrigatePlan;
import com.dy.pipIrrGlobal.pojoIr.IrIrrigateSchedule;
import com.dy.pipIrrGlobal.pojoIr.IrOpeningSchedule;
import com.dy.pipIrrGlobal.pojoIr.IrPlanOperate;
import com.dy.pipIrrGlobal.voIr.VoIrrigatePlan;
import com.dy.pipIrrGlobal.voIr.VoIrrigateSchedule;
import com.dy.pipIrrWechat.irrigatePlan.dto.IrrigatePlan;
import com.dy.pipIrrWechat.irrigatePlan.dto.IrrigateSchedule;
import com.dy.pipIrrWechat.irrigatePlan.dto.PlanSimple;
import com.dy.pipIrrWechat.irrigatePlan.enums.OperateTypeENUM;
import com.dy.pipIrrWechat.irrigatePlan.qo.QoIrrigatePlan;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
import java.util.List;
@@ -62,9 +62,14 @@
        IrIrrigatePlan plan = new IrIrrigatePlan();
        plan.setProjectId(planAndSchedule.getProjectId());
        plan.setPlanName(planAndSchedule.getPlanName());
        plan.setStartupMode(planAndSchedule.getStartupMode());
        plan.setPlanStartTime(planAndSchedule.getPlanStartTime());
        plan.setPlanStopTime(planAndSchedule.getPlanStopTime());
        Byte startupMode = planAndSchedule.getStartupMode();
        plan.setStartupMode(startupMode);
        if(startupMode == 1){
            plan.setDuration(planAndSchedule.getDuration());
        }else if(startupMode == 2){
            plan.setPlanStartTime(planAndSchedule.getPlanStartTime());
            plan.setPlanStopTime(planAndSchedule.getPlanStopTime());
        }
        plan.setPlanState((byte)1);
        plan.setExecutingState((byte)1);
        plan.setDeleted(0L);
@@ -79,29 +84,26 @@
            for(IrrigateSchedule schedule : planAndSchedule.getSchedules()){
                IrIrrigateSchedule po = new IrIrrigateSchedule();
                po.setPlanId(planId);
                if(planAndSchedule.getIrrigateType() == 1) {
                    po.setGroupId(schedule.getIrrigateId());
                    List<Long> intakesData = irrigatePlanSv.getIntakesByGroupId(schedule.getIrrigateId());
                    if(intakesData != null && intakesData.size() > 0){
                        String intakeIds = "";
                        for(Long intakeId : intakesData){
                            intakeIds += intakeId + ",";
                        }
                        po.setIntakeIds(intakeIds.substring(0, intakeIds.length() - 1));
                    }
                }else {
                    po.setUnitId(schedule.getIrrigateId());
                    Long intakeId = irrigatePlanSv.getIntakeIdByUnitId(schedule.getIrrigateId());
                    if(intakeId != null){
                        po.setIntakeIds(intakeId.toString());
                    }
                po.setGroupId(schedule.getGroupId());
                if(startupMode == 1){
                    po.setDuration(schedule.getDuration());
                }else if(startupMode == 2){
                    po.setStartTime(schedule.getStartTime());
                    po.setStopTime(schedule.getStopTime());
                }
                po.setStartTime(schedule.getStartTime());
                po.setStopTime(schedule.getStopTime());
                po.setCurrentState((byte)1);
                List<Long> intakesData = irrigatePlanSv.getIntakesByGroupId(schedule.getGroupId());
                if(intakesData != null && intakesData.size() > 0){
                    String intakeIds = "";
                    for(Long intakeId : intakesData){
                        intakeIds += intakeId + ",";
                    }
                    po.setIntakeIds(intakeIds.substring(0, intakeIds.length() - 1));
                }
                Long scheduleId = irrigatePlanSv.addIrrigateSchedule(po);
                if(scheduleId == null) {
                    return BaseResponseUtils.buildErrorMsg("创建灌溉计划失败");
                }
            }
        }
@@ -136,6 +138,10 @@
        Long planId = planSimple.getPlanId();
        Long operatorId = planSimple.getOperatorId();
        if(irrigatePlanSv.getPublishedCount(planId) > 0){
            return BaseResponseUtils.buildErrorMsg("该灌溉计划已发布");
        }
        // 修改灌溉计划状态为发布状态
        if(irrigatePlanSv.publishIrrigatePlan(planId) == 0){
            return BaseResponseUtils.buildErrorMsg("修改灌溉计划状态失败");
@@ -151,11 +157,17 @@
            return BaseResponseUtils.buildErrorMsg("添加灌溉计划操作记录失败");
        }
        // 生成开阀计划
        List<VoIrrigateSchedule> schedules = irrigatePlanSv.getIrrigateSchedules(planId);
        /**
         * 生成开阀计划
         *     货期计划启动模式
         */
        // 获取灌溉计划启动模式
        Byte startupMode = irrigatePlanSv.getStartupMode(planId);
        List<VoIrrigateSchedule> schedules = irrigatePlanSv.getIrrigateSchedules(startupMode, planId);
        if(schedules == null || schedules.size() == 0) {
            return BaseResponseUtils.buildErrorMsg("无取水口,生成开阀计划失败");
        }
        for (VoIrrigateSchedule schedule : schedules) {
            for(String intakeId : schedule.getIntakeIds().split(",")){
                // 添加灌溉计划开启记录
@@ -171,4 +183,20 @@
        }
        return BaseResponseUtils.buildSuccess();
    }
    /**
     * 获取灌溉计划列表
     * @param vo
     * @return
     */
    @GetMapping(path = "/getIrrigatePlans")
    public BaseResponse<QueryResultVo<List<VoIrrigatePlan>>> getIrrigatePlans(QoIrrigatePlan vo) {
        try {
            QueryResultVo<List<VoIrrigatePlan>> res = irrigatePlanSv.getIrrigatePlans(vo);
            return BaseResponseUtils.buildSuccess(res);
        } catch (Exception e) {
            log.error("获取轮灌组记录异常", e);
            return BaseResponseUtils.buildException(e.getMessage());
        }
    }
}