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() < sche.start_time, 2, IF(NOW() > sche.start_time AND NOW() < 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; } }