Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV
| | |
| | | |
| | | /** |
| | | * @author ZhuBaoMin |
| | | * @date 2025-02-25 14:59 |
| | | * @LastEditTime 2025-02-25 14:59 |
| | | * @date 2025-03-27 8:54 |
| | | * @LastEditTime 2025-03-27 8:54 |
| | | * @Description |
| | | */ |
| | | |
| | |
| | | |
| | | /** |
| | | * 获取未完成的计划列表,小程序计划列表页使用 |
| | | * 计划状态:1-草稿,2-未执行,3-执行中,4-已完成 |
| | | * @return |
| | | */ |
| | | List<VoPlans> getNotCompletePlans(); |
| | | |
| | | /** |
| | | * 获取已完成的计划列表,小程序计划列表页使用 |
| | | * 计划状态:1-草稿,2-未执行,3-执行中,4-已完成 |
| | | * @return |
| | | */ |
| | | List<VoPlans> getCompletedPlans(); |
| | |
| | | |
| | | int updateByPrimaryKey(IrProjectGroup record); |
| | | |
| | | /** |
| | | * 解绑项目与轮罐组关联 |
| | | * @param projectId |
| | | * @return |
| | | */ |
| | | Integer unbindGroup(Long projectId); |
| | | |
| | | } |
| | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.dy.pipIrrGlobal.pojoIr.IrProject; |
| | | import com.dy.pipIrrGlobal.voIr.VoProject; |
| | | import com.dy.pipIrrGlobal.voIr.VoProjectDetail; |
| | | import com.dy.pipIrrGlobal.voIr.VoProjectOne; |
| | | import com.dy.pipIrrGlobal.voIr.VoProjectSimple; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | |
| | | * @return |
| | | */ |
| | | List<VoProjectSimple> getSimpleProjects(Map<?, ?> params); |
| | | |
| | | /** |
| | | * 根据项目Id获取项目详情,编辑项目信息使用 |
| | | * @param projectId |
| | | * @return |
| | | */ |
| | | VoProjectDetail getProjectDetail(Long projectId); |
| | | } |
| | |
| | | private Long id; |
| | | |
| | | /** |
| | | * 项目ID |
| | | */ |
| | | private Long projectId; |
| | | |
| | | /** |
| | | * 计划名称 |
| | | */ |
| | | @NotBlank(message = "计划名称不能为空") |
| | |
| | | */ |
| | | |
| | | @Data |
| | | @JsonPropertyOrder({"planId", "planName", "startupMode", "planStartTime", "planStopTime", "duration", "planState"}) |
| | | @JsonPropertyOrder({"projectName","planId", "planName", "startupMode", "planStartTime", "planStopTime", "duration", "planState"}) |
| | | public class VoPlans { |
| | | public static final long serialVersionUID = 202503261555001L; |
| | | |
| | | /** |
| | | * 项目名称 |
| | | */ |
| | | private String projectName; |
| | | |
| | | /** |
| | | * 计划ID |
| | | */ |
| | | @JSONField(serializeUsing= ObjectWriterImplToString.class) |
New file |
| | |
| | | package com.dy.pipIrrGlobal.voIr; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonPropertyOrder; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * @author ZhuBaoMin |
| | | * @date 2025-03-28 8:49 |
| | | * @LastEditTime 2025-03-28 8:49 |
| | | * @Description 灌溉项目详情视图对象 |
| | | */ |
| | | |
| | | @Data |
| | | @JsonPropertyOrder({"projectName", "irrigateGroups"}) |
| | | public class VoProjectDetail { |
| | | public static final long serialVersionUID = 202503280850001L; |
| | | |
| | | /** |
| | | * 项目名称 |
| | | */ |
| | | private String projectName; |
| | | |
| | | /** |
| | | * 灌溉组列表 |
| | | */ |
| | | private String irrigateGroups; |
| | | } |
| | |
| | | <!--@mbg.generated--> |
| | | <!--@Table ir_irrigate_plan--> |
| | | <id column="id" jdbcType="BIGINT" property="id" /> |
| | | <result column="project_id" jdbcType="BIGINT" property="projectId" /> |
| | | <result column="plan_name" jdbcType="VARCHAR" property="planName" /> |
| | | <result column="startup_mode" jdbcType="TINYINT" property="startupMode" /> |
| | | <result column="plan_start_time" jdbcType="TIMESTAMP" property="planStartTime" /> |
| | |
| | | </resultMap> |
| | | <sql id="Base_Column_List"> |
| | | <!--@mbg.generated--> |
| | | id, plan_name, startup_mode, plan_start_time, plan_stop_time, duration, |
| | | id, project_id, plan_name, startup_mode, plan_start_time, plan_stop_time, duration, |
| | | plan_state, executing_state, deleted |
| | | </sql> |
| | | <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap"> |
| | |
| | | </delete> |
| | | <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoIr.IrIrrigatePlan"> |
| | | <!--@mbg.generated--> |
| | | insert into ir_irrigate_plan (id, plan_name, |
| | | insert into ir_irrigate_plan (id, project_id, plan_name, |
| | | startup_mode, plan_start_time, plan_stop_time, |
| | | duration, plan_state, executing_state, |
| | | deleted) |
| | | values (#{id,jdbcType=BIGINT}, #{planName,jdbcType=VARCHAR}, |
| | | values (#{id,jdbcType=BIGINT}, #{projectId,jdbcType=BIGINT}, #{planName,jdbcType=VARCHAR}, |
| | | #{startupMode,jdbcType=TINYINT}, #{planStartTime,jdbcType=TIMESTAMP}, #{planStopTime,jdbcType=TIMESTAMP}, |
| | | #{duration,jdbcType=INTEGER}, #{planState,jdbcType=TINYINT}, #{executingState,jdbcType=TINYINT}, |
| | | #{deleted,jdbcType=BIGINT}) |
| | |
| | | <trim prefix="(" suffix=")" suffixOverrides=","> |
| | | <if test="id != null"> |
| | | id, |
| | | </if> |
| | | <if test="projectId != null"> |
| | | project_id, |
| | | </if> |
| | | <if test="planName != null"> |
| | | plan_name, |
| | |
| | | <trim prefix="values (" suffix=")" suffixOverrides=","> |
| | | <if test="id != null"> |
| | | #{id,jdbcType=BIGINT}, |
| | | </if> |
| | | <if test="projectId != null"> |
| | | #{projectId,jdbcType=BIGINT}, |
| | | </if> |
| | | <if test="planName != null"> |
| | | #{planName,jdbcType=VARCHAR}, |
| | |
| | | <!--@mbg.generated--> |
| | | update ir_irrigate_plan |
| | | <set> |
| | | <if test="projectId != null"> |
| | | project_id = #{projectId,jdbcType=BIGINT}, |
| | | </if> |
| | | <if test="planName != null"> |
| | | plan_name = #{planName,jdbcType=VARCHAR}, |
| | | </if> |
| | |
| | | <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoIr.IrIrrigatePlan"> |
| | | <!--@mbg.generated--> |
| | | update ir_irrigate_plan |
| | | set plan_name = #{planName,jdbcType=VARCHAR}, |
| | | set project_id = #{projectId,jdbcType=BIGINT}, |
| | | plan_name = #{planName,jdbcType=VARCHAR}, |
| | | startup_mode = #{startupMode,jdbcType=TINYINT}, |
| | | plan_start_time = #{planStartTime,jdbcType=TIMESTAMP}, |
| | | plan_stop_time = #{planStopTime,jdbcType=TIMESTAMP}, |
| | |
| | | <!--获取未完成的计划列表,小程序计划列表页使用--> |
| | | <select id="getNotCompletePlans" resultType="com.dy.pipIrrGlobal.voIr.VoPlans"> |
| | | SELECT |
| | | id AS planId, |
| | | plan_name AS planName, |
| | | startup_mode AS startupMode, |
| | | plan_start_time AS planStartTime, |
| | | plan_stop_time AS planStopTime, |
| | | duration, |
| | | IF(plan_state = 1,'草稿', |
| | | IF(NOW() < plan_start_time, '未执行', |
| | | IF(NOW() >= plan_start_time AND NOW() < plan_stop_time, '执行中', '已完成') |
| | | pro.project_name AS projectName, |
| | | plan.id AS planId, |
| | | plan.plan_name AS planName, |
| | | plan.startup_mode AS startupMode, |
| | | plan.plan_start_time AS planStartTime, |
| | | plan.plan_stop_time AS planStopTime, |
| | | plan.duration, |
| | | IF(plan.plan_state = 1, 1, |
| | | IF(NOW() < plan.plan_start_time, 2, |
| | | IF(NOW() >= plan.plan_start_time AND NOW() < plan.plan_stop_time, 3, 4) |
| | | ) |
| | | ) AS planState |
| | | FROM ir_irrigate_plan plan |
| | | WHERE deleted = 0 AND (plan_state = 1 OR NOW() < plan_stop_time) |
| | | ORDER BY plan_state DESC |
| | | INNER JOIN ir_project pro ON pro.id = plan.project_id |
| | | WHERE plan.deleted = 0 AND (plan.plan_state = 1 OR NOW() < plan.plan_stop_time) |
| | | ORDER BY plan.plan_state DESC |
| | | </select> |
| | | |
| | | <!--获取已完成的计划列表,小程序计划列表页使用--> |
| | | <select id="getCompletedPlans" resultType="com.dy.pipIrrGlobal.voIr.VoPlans"> |
| | | SELECT |
| | | id AS planId, |
| | | plan_name AS planName, |
| | | startup_mode AS startupMode, |
| | | plan_start_time AS planStartTime, |
| | | plan_stop_time AS planStopTime, |
| | | duration, |
| | | IF(plan_state = 1,'草稿', |
| | | IF(NOW() < plan_start_time, '未执行', |
| | | IF(NOW() >= plan_start_time AND NOW() < plan_stop_time, '执行中', '已完成') |
| | | pro.project_name AS projectName, |
| | | plan.id AS planId, |
| | | plan.plan_name AS planName, |
| | | plan.startup_mode AS startupMode, |
| | | plan.plan_start_time AS planStartTime, |
| | | plan.plan_stop_time AS planStopTime, |
| | | plan.duration, |
| | | IF(plan.plan_state = 1, 1, |
| | | IF(NOW() < plan.plan_start_time, 2, |
| | | IF(NOW() >= plan.plan_start_time AND NOW() < plan.plan_stop_time, 3, 4) |
| | | ) |
| | | ) AS planState |
| | | FROM ir_irrigate_plan plan |
| | | WHERE deleted = 0 AND (plan_state = 2 AND NOW() >= plan_stop_time) |
| | | ORDER BY plan_state DESC |
| | | INNER JOIN ir_project pro ON pro.id = plan.project_id |
| | | WHERE plan.deleted = 0 AND (plan.plan_state = 2 AND NOW() >= plan.plan_stop_time) |
| | | ORDER BY plan.plan_state DESC |
| | | </select> |
| | | |
| | | </mapper> |
| | |
| | | sort = #{sort,jdbcType=INTEGER} |
| | | where id = #{id,jdbcType=BIGINT} |
| | | </update> |
| | | |
| | | <!--解绑项目与轮罐组关联--> |
| | | <delete id="unbindGroup"> |
| | | delete from ir_project_group where project_id=#{projectId} |
| | | </delete> |
| | | </mapper> |
| | |
| | | </if> |
| | | </trim> |
| | | </select> |
| | | |
| | | <!--根据项目Id获取项目详情,编辑项目信息使用--> |
| | | <select id="getProjectDetail" resultType="com.dy.pipIrrGlobal.voIr.VoProjectDetail"> |
| | | SELECT |
| | | projectName, |
| | | GROUP_CONCAT(groupId) AS irrigateGroups |
| | | FROM |
| | | ( |
| | | SELECT |
| | | pro.project_name AS projectName, |
| | | grp.id AS groupId |
| | | FROM ir_project pro |
| | | INNER JOIN ir_project_group pg ON pg.project_id = pro.id |
| | | INNER JOIN ir_irrigate_group grp ON grp.id = pg.group_id |
| | | WHERE pro.id = #{projectId} |
| | | ) project |
| | | GROUP BY projectName |
| | | </select> |
| | | </mapper> |
| | |
| | | import org.springframework.context.annotation.FilterType; |
| | | |
| | | @SpringBootApplication |
| | | @EnableAspectJAutoProxy |
| | | @EnableAspectJAutoProxy(exposeProxy = true) |
| | | @EnableMultiDataSource |
| | | @ComponentScan(basePackages = {"com.dy.common", "com.dy.pipIrrGlobal", "com.dy.pipIrrIrrigate"}, |
| | | excludeFilters = { |
| | |
| | | import com.dy.common.webUtil.ResultCodeMsg; |
| | | import com.dy.pipIrrGlobal.pojoIr.IrProject; |
| | | import com.dy.pipIrrGlobal.voIr.VoProject; |
| | | import com.dy.pipIrrGlobal.voIr.VoProjectDetail; |
| | | import com.dy.pipIrrGlobal.voIr.VoProjectOne; |
| | | import com.dy.pipIrrGlobal.voIr.VoProjectSimple; |
| | | import com.dy.pipIrrGlobal.voSe.VoActiveCard; |
| | | import com.dy.pipIrrIrrigate.project.dto.IrrigateProject; |
| | | import com.dy.pipIrrIrrigate.result.IrrigateResultCode; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | | import io.swagger.v3.oas.annotations.media.Content; |
| | |
| | | private final ProjectSv projectSv; |
| | | |
| | | /** |
| | | * 添加项目 |
| | | * |
| | | * 添加项目,旧版本,原则上废弃 |
| | | * @param po 项目实体对象 |
| | | * @param bindingResult |
| | | * @return 添加是否成功 |
| | |
| | | } |
| | | |
| | | /** |
| | | * 逻辑删除项目 |
| | | * 逻辑删除项目,旧版本,原则上废弃 |
| | | * @param map |
| | | * @return |
| | | */ |
| | |
| | | } |
| | | |
| | | /** |
| | | * 修改项目信息 |
| | | * 修改项目信息,旧版本,原则上废弃 |
| | | * @param po |
| | | * @param bindingResult |
| | | * @return |
| | |
| | | } |
| | | |
| | | /** |
| | | * 修改项目状态 |
| | | * 修改项目状态,无用接口,原则上废弃 |
| | | * @param po |
| | | * @param |
| | | * @return |
| | |
| | | } |
| | | |
| | | /** |
| | | * 获取一个项目数据 |
| | | * |
| | | * 获取一个项目数据,旧版本,原则上废弃 |
| | | * @return 获取一个项目数据 |
| | | */ |
| | | @Operation(summary = "获取一个项目数据", description = "获取一个项目数据") |
| | |
| | | } |
| | | |
| | | /** |
| | | * 分页查询 |
| | | * 分页查询,旧版本,原则上废弃 |
| | | * @param vo |
| | | * @return |
| | | */ |
| | |
| | | return BaseResponseUtils.buildException(e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 添加项目,新版本,使用这个 |
| | | * @param po 项目实体对象 |
| | | * @param bindingResult |
| | | * @return 添加是否成功 |
| | | */ |
| | | @PostMapping(path = "addIrrigateProject", consumes = MediaType.APPLICATION_JSON_VALUE) |
| | | @Transactional(rollbackFor = Exception.class) |
| | | @SsoAop() |
| | | public BaseResponse<Boolean> addIrrigateProject(@RequestBody @Valid IrrigateProject po, BindingResult bindingResult) { |
| | | if (bindingResult != null && bindingResult.hasErrors()) { |
| | | return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); |
| | | } |
| | | |
| | | Map map_result = projectSv.addIrrigateProject(po); |
| | | if(map_result.get("success").equals(false)) { |
| | | return BaseResponseUtils.buildErrorMsg(map_result.get("msg").toString()); |
| | | } |
| | | return BaseResponseUtils.buildSuccess() ; |
| | | |
| | | //String projectName = po.getProjectName(); |
| | | //String irrigateGroups = po.getIrrigateGroups(); |
| | | //Long operatorId = po.getOperatorId(); |
| | | // |
| | | //IrProject irProject = new IrProject(); |
| | | //irProject.setProjectName(projectName); |
| | | //irProject.setProjectState((byte)1); |
| | | //irProject.setOperator(operatorId); |
| | | //irProject.setOperateTime(new Date()); |
| | | //irProject.setDeleted((byte)0); |
| | | //Long projectId = projectSv.addIrrigateProject(irProject); |
| | | //if(projectId == null) { |
| | | // return BaseResponseUtils.buildErrorMsg("创建灌溉项目失败"); |
| | | //} |
| | | // |
| | | //String[] irrigateGroupArr = irrigateGroups.split(","); |
| | | //Integer sort = 1; |
| | | //for(String irrigateGroupId : irrigateGroupArr) { |
| | | // String trimmed = irrigateGroupId.trim(); |
| | | // if(trimmed.isEmpty()) { |
| | | // continue; |
| | | // } |
| | | // try { |
| | | // Long irrigateGroupIdLong = Long.parseLong(trimmed); |
| | | // IrProjectGroup irProjectGroup = new IrProjectGroup(); |
| | | // irProjectGroup.setProjectId(projectId); |
| | | // irProjectGroup.setGroupId(irrigateGroupIdLong); |
| | | // irProjectGroup.setSort(sort++); |
| | | // projectSv.projectBindGroup(irProjectGroup); |
| | | // |
| | | // } catch (NumberFormatException e) { |
| | | // return BaseResponseUtils.buildErrorMsg("灌溉组ID格式错误"); |
| | | // } |
| | | //} |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 删除项目,新版本,使用这个 |
| | | * @param projectId |
| | | * @return |
| | | */ |
| | | @PostMapping(path = "deleteIrrigateProject") |
| | | @Transactional(rollbackFor = Exception.class) |
| | | @SsoAop() |
| | | public BaseResponse<Boolean> deleteIrrigateProject(@RequestParam(required = false) Long projectId) { |
| | | if(projectId == null) { |
| | | return BaseResponseUtils.buildErrorMsg("项目ID不能为空"); |
| | | } |
| | | |
| | | Map map_result = projectSv.deleteIrrigateProject(projectId); |
| | | if(map_result.get("success").equals(false)) { |
| | | return BaseResponseUtils.buildErrorMsg(map_result.get("msg").toString()); |
| | | } |
| | | return BaseResponseUtils.buildSuccess() ; |
| | | } |
| | | |
| | | /** |
| | | * 修改项目,新版本,使用这个 |
| | | * @param po |
| | | * @param bindingResult |
| | | * @return |
| | | */ |
| | | @PostMapping(path = "updateIrrigateProject", consumes = MediaType.APPLICATION_JSON_VALUE) |
| | | @Transactional(rollbackFor = Exception.class) |
| | | @SsoAop() |
| | | public BaseResponse<Boolean> updateIrrigateProject(@RequestBody @Valid IrrigateProject po, BindingResult bindingResult){ |
| | | if (bindingResult != null && bindingResult.hasErrors()) { |
| | | return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); |
| | | } |
| | | |
| | | if(po.getProjectId() == null) { |
| | | return BaseResponseUtils.buildErrorMsg("项目ID不能为空"); |
| | | } |
| | | |
| | | Map map_result = projectSv.updateIrrigateProject(po); |
| | | if(map_result.get("success").equals(false)) { |
| | | return BaseResponseUtils.buildErrorMsg(map_result.get("msg").toString()); |
| | | } |
| | | return BaseResponseUtils.buildSuccess() ; |
| | | } |
| | | |
| | | /** |
| | | * 分页查询项目,新版本,目前使用 |
| | | * @param qo |
| | | * @return |
| | | */ |
| | | @GetMapping(path = "/getSimpleProjects") |
| | | @SsoAop() |
| | | public BaseResponse<QueryResultVo<List<VoProjectSimple>>> getSimpleProjects(QueryVo qo) { |
| | | try { |
| | | QueryResultVo<List<VoProjectSimple>> res = projectSv.getSimpleProjects(qo); |
| | | return BaseResponseUtils.buildSuccess(res); |
| | | } catch (Exception e) { |
| | | log.error("获取项目记录异常", e); |
| | | return BaseResponseUtils.buildException(e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 根据项目Id获取项目详情,编辑项目信息使用 |
| | | * @param projectId |
| | | * @return |
| | | */ |
| | | @GetMapping(path = "getProject") |
| | | @SsoAop() |
| | | public BaseResponse<VoProjectDetail> getProject(@RequestParam Long projectId) { |
| | | if(projectId == null) { |
| | | return BaseResponseUtils.buildErrorMsg("项目ID不能为空"); |
| | | } |
| | | |
| | | Map map_result = projectSv.getProjectDetail(projectId); |
| | | if(map_result.get("success").equals(false)) { |
| | | return BaseResponseUtils.buildErrorMsg(map_result.get("msg").toString()); |
| | | } |
| | | return BaseResponseUtils.buildSuccess(map_result.get("content")) ; |
| | | } |
| | | } |
| | |
| | | |
| | | |
| | | import com.dy.common.webUtil.QueryResultVo; |
| | | import com.dy.pipIrrGlobal.daoIr.IrProjectGroupMapper; |
| | | import com.dy.pipIrrGlobal.daoIr.IrProjectMapper; |
| | | import com.dy.pipIrrGlobal.pojoIr.IrProject; |
| | | import com.dy.pipIrrGlobal.pojoIr.IrProjectGroup; |
| | | import com.dy.pipIrrGlobal.voIr.VoProject; |
| | | import com.dy.pipIrrGlobal.voIr.VoProjectDetail; |
| | | import com.dy.pipIrrGlobal.voIr.VoProjectOne; |
| | | import com.dy.pipIrrGlobal.voIr.VoProjectSimple; |
| | | import com.dy.pipIrrIrrigate.project.dto.IrrigateProject; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.dubbo.common.utils.PojoUtils; |
| | | import org.springframework.aop.framework.AopContext; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | |
| | | @Autowired |
| | | private IrProjectMapper irProjectMapper; |
| | | |
| | | @Autowired |
| | | private IrProjectGroupMapper irProjectGroupMapper; |
| | | |
| | | /** |
| | | * 添加项目 |
| | | * |
| | | * 添加项目,旧版本,原则上废弃 |
| | | * @param po |
| | | * @return |
| | | */ |
| | |
| | | } |
| | | |
| | | /** |
| | | * 删除项目 |
| | | * |
| | | * 添加项目,目前使用 |
| | | * @param po |
| | | * @return |
| | | */ |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public Map addIrrigateProject(IrrigateProject po) { |
| | | String projectName = po.getProjectName(); |
| | | String irrigateGroups = po.getIrrigateGroups(); |
| | | Long operatorId = po.getOperatorId(); |
| | | |
| | | IrProject irProject = new IrProject(); |
| | | irProject.setProjectName(projectName); |
| | | irProject.setProjectState((byte)1); |
| | | irProject.setOperator(operatorId); |
| | | irProject.setOperateTime(new Date()); |
| | | irProject.setDeleted((byte)0); |
| | | irProjectMapper.insert(irProject); |
| | | Long projectId = irProject.getId(); |
| | | if(projectId == null) { |
| | | Map map = new HashMap<>(); |
| | | map.put("success", false); |
| | | map.put("msg", "创建灌溉项目失败"); |
| | | map.put("content", null); |
| | | return map; |
| | | } |
| | | |
| | | String[] irrigateGroupArr = irrigateGroups.split(","); |
| | | Integer sort = 1; |
| | | for(String irrigateGroupId : irrigateGroupArr) { |
| | | String trimmed = irrigateGroupId.trim(); |
| | | if(trimmed.isEmpty()) { |
| | | continue; |
| | | } |
| | | try { |
| | | Long irrigateGroupIdLong = Long.parseLong(trimmed); |
| | | IrProjectGroup irProjectGroup = new IrProjectGroup(); |
| | | irProjectGroup.setProjectId(projectId); |
| | | irProjectGroup.setGroupId(irrigateGroupIdLong); |
| | | irProjectGroup.setSort(sort++); |
| | | irProjectGroupMapper.insert(irProjectGroup); |
| | | } catch (NumberFormatException e) { |
| | | Map map = new HashMap<>(); |
| | | map.put("success", false); |
| | | map.put("msg", "灌溉组ID格式错误"); |
| | | map.put("content", null); |
| | | return map; |
| | | } |
| | | } |
| | | Map map = new HashMap<>(); |
| | | map.put("success", true); |
| | | map.put("msg", "添加灌溉项目成功"); |
| | | map.put("content", null); |
| | | return map; |
| | | } |
| | | |
| | | /** |
| | | * 删除灌溉项目,目前使用 |
| | | * @param projectId |
| | | * @return |
| | | */ |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public Map deleteIrrigateProject(Long projectId) { |
| | | try { |
| | | irProjectGroupMapper.unbindGroup(projectId); |
| | | irProjectMapper.deleteByPrimaryKey(projectId); |
| | | |
| | | Map map = new HashMap<>(); |
| | | map.put("success", true); |
| | | map.put("msg", "灌溉项目删除成功"); |
| | | map.put("content", null); |
| | | return map; |
| | | } catch (Exception e) { |
| | | Map map = new HashMap<>(); |
| | | map.put("success", false); |
| | | map.put("msg", "灌溉项目删除失败"); |
| | | map.put("content", null); |
| | | return map; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 修改灌溉项目,目前使用 |
| | | * @param po |
| | | * @return |
| | | */ |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public Map updateIrrigateProject(IrrigateProject po) { |
| | | Long projectId = po.getProjectId(); |
| | | Map map_deleteProject = ((ProjectSv) AopContext.currentProxy()).deleteIrrigateProject(projectId); |
| | | if(map_deleteProject.get("success").equals(false)) { |
| | | Map map = new HashMap<>(); |
| | | map.put("success", false); |
| | | map.put("msg", map_deleteProject.get("msg").toString()); |
| | | map.put("content", null); |
| | | return map; |
| | | } |
| | | |
| | | Map map_addProject = ((ProjectSv) AopContext.currentProxy()).addIrrigateProject(po); |
| | | if(map_addProject.get("success").equals(false)) { |
| | | Map map = new HashMap<>(); |
| | | map.put("success", false); |
| | | map.put("msg", map_addProject.get("msg").toString()); |
| | | map.put("content", null); |
| | | return map; |
| | | } |
| | | |
| | | Map map = new HashMap<>(); |
| | | map.put("success", true); |
| | | map.put("msg", "修改灌溉项目成功"); |
| | | map.put("content", null); |
| | | return map; |
| | | } |
| | | |
| | | /** |
| | | * 删除项目,旧版本,原则上废弃 |
| | | * @param id |
| | | */ |
| | | public Integer deleteProject(Long id) { |
| | |
| | | } |
| | | |
| | | /** |
| | | * 分页查询项目 |
| | | * 分页查询项目,旧版本,原则上废弃 |
| | | * @param queryVo |
| | | * @return |
| | | */ |
| | |
| | | rsVo.obj = irProjectMapper.getProjects(params); |
| | | return rsVo; |
| | | } |
| | | |
| | | /** |
| | | * 分页查询项目,新版本,目前使用 |
| | | * @param queryVo |
| | | * @return |
| | | */ |
| | | public QueryResultVo<List<VoProjectSimple>> getSimpleProjects(QueryVo queryVo) { |
| | | Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo); |
| | | Long itemTotal = irProjectMapper.getSimpleProjectsCount(params); |
| | | |
| | | QueryResultVo<List<VoProjectSimple>> rsVo = new QueryResultVo<>(); |
| | | rsVo.pageSize = queryVo.pageSize; |
| | | rsVo.pageCurr = queryVo.pageCurr; |
| | | rsVo.calculateAndSet(itemTotal, params); |
| | | rsVo.obj = irProjectMapper.getSimpleProjects(params); |
| | | return rsVo; |
| | | } |
| | | |
| | | /** |
| | | * 根据项目Id获取项目详情,编辑项目信息使用 |
| | | * @param projectId |
| | | * @return |
| | | */ |
| | | public Map getProjectDetail(Long projectId) { |
| | | try { |
| | | VoProjectDetail voProjectDetail = irProjectMapper.getProjectDetail(projectId); |
| | | Map map = new HashMap<>(); |
| | | map.put("success", true); |
| | | map.put("msg", "获取项目详情成功"); |
| | | map.put("content", voProjectDetail); |
| | | return map; |
| | | } catch (Exception e) { |
| | | Map map = new HashMap<>(); |
| | | map.put("success", false); |
| | | map.put("msg", "获取项目详情失败"); |
| | | map.put("content", null); |
| | | return map; |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package com.dy.pipIrrIrrigate.project.dto; |
| | | |
| | | import jakarta.validation.constraints.NotBlank; |
| | | import jakarta.validation.constraints.NotNull; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * @author ZhuBaoMin |
| | | * @date 2025-03-27 15:09 |
| | | * @LastEditTime 2025-03-27 15:09 |
| | | * @Description 灌溉项目实体类,添加项目使用 |
| | | */ |
| | | |
| | | @Data |
| | | public class IrrigateProject { |
| | | public static final long serialVersionUID = 202503271510001L; |
| | | |
| | | /** |
| | | * 项目ID,修改项目信息时需要传入 |
| | | */ |
| | | private Long projectId; |
| | | |
| | | /** |
| | | * 项目名称 |
| | | */ |
| | | @NotBlank(message = "项目名称不能为空") |
| | | private String projectName; |
| | | |
| | | /** |
| | | * 轮灌组列表 |
| | | */ |
| | | @NotBlank(message = "项目必须包含轮灌组") |
| | | private String irrigateGroups; |
| | | |
| | | /** |
| | | * 操作员ID |
| | | */ |
| | | @NotNull(message = "操作员ID不能为空") |
| | | private Long operatorId; |
| | | } |
| | |
| | | "com.dy.pipIrrGlobal.daoBa", |
| | | "com.dy.pipIrrGlobal.daoFi", |
| | | "com.dy.pipIrrGlobal.daoAllRound", |
| | | "com.dy.pipIrrGlobal.daoLargeScreen" |
| | | "com.dy.pipIrrGlobal.daoLargeScreen", |
| | | "com.dy.pipIrrGlobal.daoIr" |
| | | }) |
| | | public class PipIrrRemoteApplication { |
| | | |
| | |
| | | return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); |
| | | } |
| | | |
| | | Long projectId = planAndSchedule.getProjectId(); |
| | | Long operatorId = planAndSchedule.getOperatorId(); |
| | | Byte startupMode = planAndSchedule.getStartupMode(); |
| | | Date planStartTime = planAndSchedule.getPlanStartTime();; |
| | |
| | | Integer duration = 0; |
| | | for(IrrigateSchedule schedule : planAndSchedule.getSchedules()){ |
| | | duration = duration + schedule.getDuration(); |
| | | } |
| | | |
| | | if(startupMode == 2){ |
| | | if(planStartTime == null) { |
| | | return BaseResponseUtils.buildErrorMsg("自动启动模式必须指定计划启动时间"); |
| | | } |
| | | |
| | | LocalDateTime startTime = planStartTime.toInstant().atZone(ZoneId.systemDefault()) .toLocalDateTime(); |
| | | LocalDateTime currentTime = LocalDateTime.now(); |
| | | currentTime = currentTime.plusHours(8); |
| | | |
| | | if(!startTime.isAfter(currentTime)) { |
| | | return BaseResponseUtils.buildErrorMsg("启动时间不能在8小时之内"); |
| | | } |
| | | } |
| | | |
| | | //if(startupMode == 1){ |
| | |
| | | //planStopTime = Date.from(stopTime.atZone(ZoneId.systemDefault()).toInstant()); |
| | | |
| | | IrIrrigatePlan plan = new IrIrrigatePlan(); |
| | | plan.setProjectId(projectId); |
| | | plan.setPlanName(planAndSchedule.getPlanName()); |
| | | plan.setStartupMode(startupMode); |
| | | plan.setPlanStartTime(planStartTime); |
| | |
| | | planStartTime = new Date(); |
| | | } |
| | | LocalDateTime startTime = planStartTime.toInstant().atZone(ZoneId.systemDefault()) .toLocalDateTime(); |
| | | if(startupMode == 1){ |
| | | startTime = startTime.plusMinutes(5); |
| | | } |
| | | planStartTime = Date.from(startTime.atZone(ZoneId.systemDefault()).toInstant()); |
| | | LocalDateTime stopTime = startTime.plusMinutes(duration); |
| | | planStopTime = Date.from(stopTime.atZone(ZoneId.systemDefault()).toInstant()); |
| | |
| | | public static final long serialVersionUID = 202502201511001L; |
| | | |
| | | /** |
| | | * 项目ID |
| | | */ |
| | | private Long projectId; |
| | | |
| | | /** |
| | | * 计划名称 |
| | | */ |
| | | @NotBlank(message = "计划名称不能为空") |