package com.ruoyi.device.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.device.dto.DeviceExaminePlanDetailsDto; import com.ruoyi.device.dto.DeviceExaminePlanDto; import com.ruoyi.device.pojo.Device; import com.ruoyi.device.pojo.DeviceExamineAttachment; import com.ruoyi.device.pojo.DeviceExaminePlan; import com.ruoyi.device.pojo.DeviceExaminePlanDetails; import org.springframework.web.multipart.MultipartFile; import jakarta.servlet.http.HttpServletResponse; import java.util.List; /** *

* 设备核查计划主表 服务类 *

* * @author 江苏鵷雏网络科技有限公司 * @since 2024-12-16 07:14:04 */ public interface DeviceExaminePlanService extends IService { /** * 新增设备核查计划 * @param examinePlanDto * @return */ boolean addDeviceExaminePlan(DeviceExaminePlanDto examinePlanDto); /** * 导入设备核查计划 * @param file * @return */ boolean importDeviceExaminePlan(MultipartFile file); /** * 提交批准 * @param deviceExaminePlan * @return */ boolean submitRatifyDeviceExaminePlan(DeviceExaminePlan deviceExaminePlan); /** * 设备核查计划批准 * @param DeviceExaminePlan * @return */ boolean ratifyDeviceExaminePlan(DeviceExaminePlan DeviceExaminePlan); /** * 设备核查计划列表 * @param page * @param DeviceExaminePlan * @return */ IPage pageDeviceExaminePlan(Page page, DeviceExaminePlan DeviceExaminePlan); /** * 设备核查计划详情列表 * @param page * @param DeviceExaminePlanDetails * @return */ IPage pageDeviceExaminePlanDetail(Page page, DeviceExaminePlanDetails DeviceExaminePlanDetails); /** * 导出设备核查计划 * @param deviceExaminePlanId 设备核查计划id * @param response 响应 */ void exportDeviceExaminePlanDetail(Integer deviceExaminePlanId, HttpServletResponse response); /** * 批量修改设备核查计划 * @param examinePlanDto * @return */ boolean updateDeviceExaminePlan(DeviceExaminePlanDto examinePlanDto); /** * 查询设备核查计划详情 * @param planId * @return */ DeviceExaminePlanDto getDeviceExaminePlan(Integer planId); /** * 按年份查询设备核查计划(不存在则自动创建),并自动补全已到点的设备明细 * @param planYear 年份 * @return 计划主表信息 */ DeviceExaminePlanDto getOrCreatePlanByYear(String planYear); /** * 设备档案变更后,立即把设备登记到下次核查日期所在年份的设备核查计划明细 * @param device 设备 */ void syncDeviceExamineDetail(Device device); /** * 核查记录复核通过后,滚动设备档案的最近/下次核查日期,并登记下一轮计划 * @param planDetailsId 计划明细id */ void updateDeviceExamineDate(Integer planDetailsId); /** * 为指定设备找一条可录入核查记录的计划明细,没有则新增本轮明细 * @param deviceId 设备id * @param checkTime 核查月份(yyyy-MM),决定明细所属的计划年份 * @return 计划明细 */ DeviceExaminePlanDetails resolveExaminePlanDetail(Integer deviceId, String checkTime); /** * 查找指定设备可复用的核查记录计划明细(只查询,不新增计划或明细) * @param deviceId 设备id * @param checkTime 核查月份(yyyy-MM) * @return 可复用的计划明细,没有时返回 null */ DeviceExaminePlanDetails findExaminePlanDetail(Integer deviceId, String checkTime); /** * 修改计划明细(核查月份跨年时归到对应年份的计划) * @param detail 计划明细 * @return 是否修改成功 */ boolean updateExaminePlanDetail(DeviceExaminePlanDetails detail); /** * 删除计划明细(已有核查记录的不允许删除) * @param planDetailsId 计划明细id * @return 是否删除成功 */ boolean removeExaminePlanDetail(Integer planDetailsId); /** * 查询核查记录的附件列表 * @param planDetailsId 计划明细id * @return 附件列表 */ List selectAttachments(Integer planDetailsId); /** * 上传核查记录的附件(支持任意格式,可多个) * @param planDetailsId 计划明细id * @param file 文件 * @return 附件信息 */ DeviceExamineAttachment uploadAttachment(Integer planDetailsId, MultipartFile file); /** * 删除核查记录的附件 * @param id 附件id * @return 是否删除成功 */ boolean deleteAttachment(Long id); }