灌溉计划详情页,包含计划信息、轮灌组信息、取水口命令发布员结果信息
8个文件已修改
3个文件已添加
345 ■■■■ 已修改文件
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrIntakeOperateMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrIrrigateGroupMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrIrrigatePlanMapper.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voIr/VoGroupResult.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voIr/VoIntakeResult.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voIr/VoPlanDetails.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIntakeOperateMapper.xml 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigateGroupMapper.xml 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanCtrl.java 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanSv.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrIntakeOperateMapper.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dy.pipIrrGlobal.pojoIr.IrIntakeOperate;
import com.dy.pipIrrGlobal.voIr.VoIntakeResult;
import com.dy.pipIrrGlobal.voIr.VoToTerminateIntakes;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -57,4 +58,12 @@
     * @return
     */
    List<VoToTerminateIntakes> getToTerminateIntakes(Long planId);
    /**
     * 根据计划ID及管轮组ID获取取水口发布发布结果
     * @param planId
     * @param groupId
     * @return
     */
    List<VoIntakeResult> getIntakeResult(@Param("planId") Long planId, @Param("groupId") Long groupId);
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrIrrigateGroupMapper.java
@@ -2,10 +2,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dy.pipIrrGlobal.pojoIr.IrIrrigateGroup;
import com.dy.pipIrrGlobal.voIr.VoGroup;
import com.dy.pipIrrGlobal.voIr.VoGroupDetail;
import com.dy.pipIrrGlobal.voIr.VoGroupOne;
import com.dy.pipIrrGlobal.voIr.VoGroupSimple;
import com.dy.pipIrrGlobal.voIr.*;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@@ -73,4 +70,11 @@
     * @return
     */
    VoGroupDetail getGroupDetail(Long groupId);
    /**
     * 根据灌溉计划ID获取计划发布结果
     * @param planId
     * @return
     */
    List<VoGroupResult> getGroupResult(Long planId);
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrIrrigatePlanMapper.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dy.pipIrrGlobal.pojoIr.IrIrrigatePlan;
import com.dy.pipIrrGlobal.voIr.VoPlanDetails;
import com.dy.pipIrrGlobal.voIr.VoPlanSimple;
import com.dy.pipIrrGlobal.voIr.VoPlans;
import org.apache.ibatis.annotations.Mapper;
@@ -85,4 +86,11 @@
     * @return
     */
    Date getToTerminatePlan(@Param("planId") Long planId);
    /**
     * 根据计划ID获取计划详情,包括计划名称,项目名,计划开始时间,计划结束时间,计划详情页使用
     * @param planId
     * @return
     */
    VoPlanDetails getPlanDetails(@Param("planId") Long planId);
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voIr/VoGroupResult.java
New file
@@ -0,0 +1,61 @@
package com.dy.pipIrrGlobal.voIr;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
 * @author ZhuBaoMin
 * @date 2025-04-09 9:00
 * @LastEditTime 2025-04-09 9:00
 * @Description 灌溉计划发布结果(轮灌组)视图对象,VoIntakeResult的父列表
 */
@Data
@JsonPropertyOrder({"groupId", "groupCode", "state", "startTime", "stopTime", "duration", "publishResult"})
public class VoGroupResult {
    private static final long serialVersionUID = 202504090902001L;
    /**
     * 灌溉组id
     */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long groupId;
    /**
     * 灌溉组编码
     */
    private String groupCode;
    /**
     * 轮灌组状态:2-未执行,3-执行中,4-已结束
     */
    private Integer state;
    /**
     * 轮灌组开始灌溉时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    private Date startTime;
    /**
     * 轮灌组结束灌溉时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    private Date stopTime;
    /**
     * 轮灌组持续时间
     */
    private Integer duration;
    /**
     * 灌溉组发布结果,包含取水口发布结果
     */
    private List<VoIntakeResult> publishResult;
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voIr/VoIntakeResult.java
New file
@@ -0,0 +1,34 @@
package com.dy.pipIrrGlobal.voIr;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
/**
 * @author ZhuBaoMin
 * @date 2025-04-09 8:55
 * @LastEditTime 2025-04-09 8:55
 * @Description 灌溉计划发布结果(取水口)视图对象,用于灌溉计划发布结果(VoGroupResult)子列表
 */
@Data
@JsonPropertyOrder({"code", "intakeName", "result"})
public class VoIntakeResult {
    private static final long serialVersionUID = 202504090857001L;
    /**
     * 发布结果标识
     */
    private Integer code;
    /**
     * 取水口名称
     */
    private String intakeName;
    /**
     * 发布结果
     */
    private String result;
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voIr/VoPlanDetails.java
New file
@@ -0,0 +1,45 @@
package com.dy.pipIrrGlobal.voIr;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
 * @author ZhuBaoMin
 * @date 2025-04-09 11:22
 * @LastEditTime 2025-04-09 11:22
 * @Description 灌溉计划详情,拥有灌溉计划详情页
 */
@Data
@JsonPropertyOrder({"planName", "projectName", "planStartTime", "planStopTime", "groups"})
public class VoPlanDetails {
    private static final long serialVersionUID = 202504091125001L;
    /**
     * 灌溉计划名称
     */
    private String planName;
    /**
     * 项目名称
     */
    private String projectName;
    /**
     * 灌溉计划开始时间
     */
    private Date planStartTime;
    /**
     * 灌溉计划结束时间
     */
    private Date planStopTime;
    /**
     * 轮灌组列表
     */
    private List<VoGroupResult> groups;
}
pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIntakeOperateMapper.xml
@@ -178,4 +178,15 @@
    FROM ir_intake_operate
    WHERE operate_type = 1 AND command_result = 1 AND plan_id = #{planId}
  </select>
  <!--根据计划ID及管轮组ID获取取水口发布发布结果-->
  <select id="getIntakeResult" resultType="com.dy.pipIrrGlobal.voIr.VoIntakeResult">
    SELECT
        IF(io.command_result = 1, 0, 1) AS code,
        (SELECT name FROM pr_intake WHERE id = io.intake_id) AS intakeName,
        io.failure_factors AS result
    FROM ir_intake_operate io
        inner JOIN ir_group_intake gi ON gi.intake_id = io.intake_id
    WHERE io.plan_id = #{planId} AND gi.group_id = #{groupId};
  </select>
</mapper>
pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigateGroupMapper.xml
@@ -304,4 +304,20 @@
      ) irrigateGroup
    GROUP BY groupCode,defaultDuration
  </select>
  <select id="getGroupResult" resultType="com.dy.pipIrrGlobal.voIr.VoGroupResult">
    SELECT
        grp.id AS groupId,
        grp.group_code AS groupCode,
        IF(NOW() &lt; sche.start_time, 2,
        IF(NOW() > sche.start_time AND NOW() &lt; DATE_ADD(sche.start_time, INTERVAL sche.duration MINUTE), 3, 4)) AS state,
        sche.start_time AS startTime,
        DATE_ADD(sche.start_time, INTERVAL sche.duration MINUTE) AS stopTime,
        sche.duration,
        NULL AS publishResult
    FROM ir_irrigate_group  grp
        INNER JOIN ir_irrigate_schedule sche ON sche.group_id = grp.id
        INNER JOIN ir_plan_schedule ps ON ps.schedule_id = sche.id
    WHERE ps.plan_id = #{planId};
  </select>
</mapper>
pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml
@@ -337,4 +337,18 @@
  </select>
  <!--根据计划ID获取计划详情,包括计划名称,项目名,计划开始时间,计划结束时间,计划详情页使用-->
  <select id="getPlanDetails" resultType="com.dy.pipIrrGlobal.voIr.VoPlanDetails">
    SELECT
      plan.plan_name AS planName,
      pro.project_name AS projectName,
      plan.plan_start_time AS planStartTime,
      plan.plan_stop_time AS planStopTime,
      NULL AS groupDetails
    FROM ir_irrigate_plan plan
        INNER JOIN ir_project pro ON pro.id = plan.project_id
    WHERE plan.id = #{planId}
    AND plan.deleted = 0
  </select>
</mapper>
pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanCtrl.java
@@ -7,10 +7,7 @@
import com.dy.pipIrrGlobal.pojoIr.IrPlanOperate;
import com.dy.pipIrrGlobal.pojoIr.IrPlanSchedule;
import com.dy.pipIrrGlobal.pojoRm.RmCommandHistory;
import com.dy.pipIrrGlobal.voIr.VoIrrigateSchedule;
import com.dy.pipIrrGlobal.voIr.VoPlanSimple;
import com.dy.pipIrrGlobal.voIr.VoPlans;
import com.dy.pipIrrGlobal.voIr.VoToTerminateIntakes;
import com.dy.pipIrrGlobal.voIr.*;
import com.dy.pipIrrGlobal.voRm.VoIntakeVc;
import com.dy.pipIrrWechat.command.CommandSv;
import com.dy.pipIrrWechat.command.dto.AutomaticClose;
@@ -162,36 +159,6 @@
        }
        return BaseResponseUtils.buildSuccess();
    }
    /**
     * 获取未完成的计划列表,小程序计划列表页使用
     * @return
     */
    @GetMapping(path = "/getNotCompletePlans")
    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")
    public BaseResponse<List<VoPlans>> getCompletedPlans() {
        try {
            List<VoPlans> res = irrigatePlanSv.getCompletedPlans();
            return BaseResponseUtils.buildSuccess(res);
        } catch (Exception e) {
            log.error("获取项目记录异常", e);
            return BaseResponseUtils.buildException(e.getMessage());
        }
    }
    /**
@@ -382,4 +349,54 @@
        }
        return BaseResponseUtils.buildSuccess();
    }
    /**
     * 获取未完成的计划列表,小程序计划列表页使用
     * @return
     */
    @GetMapping(path = "/getNotCompletePlans")
    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")
    public BaseResponse<List<VoPlans>> getCompletedPlans() {
        try {
            List<VoPlans> res = irrigatePlanSv.getCompletedPlans();
            return BaseResponseUtils.buildSuccess(res);
        } catch (Exception e) {
            log.error("获取项目记录异常", e);
            return BaseResponseUtils.buildException(e.getMessage());
        }
    }
    /**
     * 根据计划ID获取计划发布结果
     * @param planId
     * @return
     */
    @GetMapping(path = "/getPublishResults")
    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());
        }
    }
}
pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanSv.java
@@ -1,17 +1,18 @@
package com.dy.pipIrrWechat.irrigatePlan;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.dy.pipIrrGlobal.daoIr.*;
import com.dy.pipIrrGlobal.daoRm.RmCommandHistoryMapper;
import com.dy.pipIrrGlobal.pojoIr.IrIrrigatePlan;
import com.dy.pipIrrGlobal.pojoIr.IrIrrigateSchedule;
import com.dy.pipIrrGlobal.pojoIr.IrPlanOperate;
import com.dy.pipIrrGlobal.pojoIr.IrPlanSchedule;
import com.dy.pipIrrGlobal.voIr.VoIrrigateSchedule;
import com.dy.pipIrrGlobal.voIr.VoPlanSimple;
import com.dy.pipIrrGlobal.voIr.VoPlans;
import com.dy.pipIrrGlobal.voIr.VoToTerminateIntakes;
import com.dy.pipIrrGlobal.voIr.*;
import com.dy.pipIrrGlobal.voRm.VoIntakeVc;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -271,4 +272,45 @@
    public Long getIntakeIdByUnitId(Long unitId) {
        return irIrrigateUnitMapper.getIntakeIdByUnitId(unitId);
    }
    /**
     * 根据计划ID获取计划发布结果
     * @param planId
     * @return
     */
    public VoPlanDetails getPublishResults(Long planId) {
        List<VoGroupResult> groupResults = irIrrigateGroupMapper.getGroupResult(planId);
        if(groupResults == null || groupResults.size() == 0){
            return null;
        }
        VoPlanDetails planDetails = irrigatePlanMapper.getPlanDetails(planId);
        for (VoGroupResult groupResult : groupResults) {
            List<VoIntakeResult> intakeResults = irIntakeOperateMapper.getIntakeResult(planId, groupResult.getGroupId());
            if(intakeResults != null) {
                groupResult.setPublishResult(intakeResults);
            }
        }
        planDetails.setGroups(groupResults);
        return planDetails;
        //JSONArray array_groupResult = (JSONArray) JSON.toJSON(groupResults);
        //for(int i = 0; i < array_groupResult.size(); i++){
        //    JSONObject job_groupResult = array_groupResult.getJSONObject(i);
        //    Long groupId = job_groupResult.getLong("groupId");
        //
        //    List<VoIntakeResult> intakeResults = irIntakeOperateMapper.getIntakeResult(planId, groupId);
        //    if(intakeResults != null) {
        //        JSONArray array_intakeResult = (JSONArray) JSON.toJSON(intakeResults);
        //        job_groupResult.put("publishResult", array_intakeResult);
        //    }
        //}
        //
        //List<VoGroupResult> publishResults = array_groupResult.toJavaList(VoGroupResult.class);
        //return publishResults;
    }
}