| | |
| | | |
| | | 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; |
| | | import java.util.Objects; |
| | | |
| | |
| | | public class IrrigatePlanCtrl { |
| | | private final IrrigatePlanSv irrigatePlanSv; |
| | | |
| | | /** |
| | | * 创建灌溉计划 |
| | | * 1. 添加灌溉计划 |
| | | * 2. 添加灌溉次序 |
| | | * 3. 添加灌溉计划操作记录 |
| | | * @param planAndSchedule |
| | | * @param bindingResult |
| | | * @return |
| | | */ |
| | | @PostMapping(path = "createPlan", consumes = MediaType.APPLICATION_JSON_VALUE) |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public BaseResponse<Boolean> createPlan(@RequestBody @Valid IrrigatePlan planAndSchedule, BindingResult bindingResult){ |
| | |
| | | return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); |
| | | } |
| | | |
| | | Long operatorId = planAndSchedule.getOperatorId(); |
| | | |
| | | // 添加灌溉计划 |
| | | IrIrrigatePlan plan = new IrIrrigatePlan(); |
| | | plan.setProjectId(planAndSchedule.getProjectId()); |
| | | plan.setPlanName(planAndSchedule.getPlanName()); |
| | |
| | | plan.setDeleted(0L); |
| | | |
| | | Long planId = irrigatePlanSv.addIrrigatePlan(plan); |
| | | if(planId == null) { |
| | | return BaseResponseUtils.buildErrorMsg("创建灌溉计划失败"); |
| | | } |
| | | |
| | | // 添加灌溉次序 |
| | | if(planId != null){ |
| | | for(IrrigateSchedule schedule : planAndSchedule.getSchedules()){ |
| | | IrIrrigateSchedule po = new IrIrrigateSchedule(); |
| | |
| | | |
| | | po.setStartTime(schedule.getStartTime()); |
| | | po.setStopTime(schedule.getStopTime()); |
| | | //po.setIntakeIds(schedule.getIntakeIds()); |
| | | po.setCurrentState((byte)1); |
| | | Long scheduleId = irrigatePlanSv.addIrrigateSchedule(po); |
| | | } |
| | | } |
| | | |
| | | // 添加灌溉计划操作记录 |
| | | IrPlanOperate planOperate = new IrPlanOperate(); |
| | | planOperate.setPlanId(planId); |
| | | planOperate.setOperator(operatorId); |
| | | planOperate.setOperateType(OperateTypeENUM.CREATE.getCode()); |
| | | planOperate.setOperateTime(new Date()); |
| | | if(irrigatePlanSv.addPlanOperate(planOperate) == 0){ |
| | | return BaseResponseUtils.buildErrorMsg("添加灌溉计划操作记录失败"); |
| | | } |
| | | |
| | | return BaseResponseUtils.buildSuccess(); |
| | | } |
| | | |
| | | /** |
| | | * 发布灌溉计划 |
| | | * 1. 修改灌溉计划状态为发布状态 |
| | | * 2. 添加灌溉计划操作记录 |
| | | * 3. 生成开阀计划 |
| | | * @param planSimple |
| | | * @param bindingResult |
| | | * @return |
| | | */ |
| | | @PostMapping(path = "publishPlan", consumes = MediaType.APPLICATION_JSON_VALUE) |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public BaseResponse<Boolean> publishPlan(@RequestBody @Valid PlanSimple planSimple, BindingResult bindingResult){ |
| | | if(bindingResult != null && bindingResult.hasErrors()){ |
| | | return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); |
| | | } |
| | | Long planId = planSimple.getPlanId(); |
| | | Long operatorId = planSimple.getOperatorId(); |
| | | |
| | | // 修改灌溉计划状态为发布状态 |
| | | if(irrigatePlanSv.publishIrrigatePlan(planId) == 0){ |
| | | return BaseResponseUtils.buildErrorMsg("修改灌溉计划状态失败"); |
| | | } |
| | | |
| | | // 添加灌溉计划操作记录 |
| | | IrPlanOperate planOperate = new IrPlanOperate(); |
| | | planOperate.setPlanId(planId); |
| | | planOperate.setOperator(operatorId); |
| | | planOperate.setOperateType(OperateTypeENUM.PUBLISH.getCode()); |
| | | planOperate.setOperateTime(new Date()); |
| | | if(irrigatePlanSv.addPlanOperate(planOperate) == 0){ |
| | | return BaseResponseUtils.buildErrorMsg("添加灌溉计划操作记录失败"); |
| | | } |
| | | |
| | | // 生成开阀计划 |
| | | List<VoIrrigateSchedule> schedules = irrigatePlanSv.getIrrigateSchedules(planId); |
| | | if(schedules == null || schedules.size() == 0) { |
| | | return BaseResponseUtils.buildErrorMsg("无取水口,生成开阀计划失败"); |
| | | } |
| | | for (VoIrrigateSchedule schedule : schedules) { |
| | | for(String intakeId : schedule.getIntakeIds().split(",")){ |
| | | // 添加灌溉计划开启记录 |
| | | IrOpeningSchedule openingSchedule = new IrOpeningSchedule(); |
| | | openingSchedule.setScheduleId(schedule.getScheduleId()); |
| | | openingSchedule.setIntakeId(Long.parseLong(intakeId)); |
| | | openingSchedule.setStartTime(schedule.getStartTime()); |
| | | openingSchedule.setDuration(schedule.getDuration()); |
| | | if(irrigatePlanSv.addOpeningSchedule(openingSchedule) == 0){ |
| | | return BaseResponseUtils.buildErrorMsg("添加开阀计划失败"); |
| | | } |
| | | } |
| | | } |
| | | 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()); |
| | | } |
| | | } |
| | | } |