cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenancePlanService.java
@@ -4,10 +4,17 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.device.dto.DeviceMaintenancePlanDetailsDto;
import com.ruoyi.device.dto.DeviceMaintenancePlanDto;
import com.ruoyi.device.pojo.Device;
import com.ruoyi.device.pojo.DeviceMaintenanceAttachment;
import com.ruoyi.device.pojo.DeviceMaintenancePlan;
import com.ruoyi.device.pojo.DeviceMaintenancePlanDetails;
import org.springframework.web.multipart.MultipartFile;
import jakarta.servlet.http.HttpServletResponse;
import java.time.LocalDate;
import java.util.List;
/**
 * <p>
@@ -76,4 +83,74 @@
     */
    Result reviewMaintenancePlanStatus(DeviceMaintenancePlanDto deviceMaintenancePlanDto);
    /**
     * 按年份查询设备保养计划(不存在则自动创建),并自动补全已到点的设备明细
     * @param planYear 计划年份
     * @return 设备保养计划
     */
    DeviceMaintenancePlanDto getOrCreatePlanByYear(String planYear);
    /**
     * 保养计划年份列表:删除没有任何明细的空年份计划后,返回有明细的年份(倒序)
     * @return 年份列表
     */
    List<String> getMaintenancePlanYears();
    /**
     * 设备档案变更后,立即把设备登记到下次保养日期所在年份的设备保养计划明细
     * @param device 设备
     */
    void syncDeviceMaintenanceDetail(Device device);
    /**
     * 审核通过后,按审核通过当天滚动设备档案的最近/下次保养日期
     * @param deviceId 设备id
     * @param maintenanceDate 保养完成日期(审核通过当天)
     */
    void updateDeviceMaintenanceDate(Integer deviceId, LocalDate maintenanceDate);
    /**
     * 审核通过后,把计划明细归到审核完成年份的计划下(提前完成的明细不再留在原计划年份)
     * @param maintenancePlanDetailId 保养计划明细id
     * @param reviewDate 审核完成日期
     */
    void reclassifyMaintenanceDetailByReviewDate(Integer maintenancePlanDetailId, LocalDate reviewDate);
    /**
     * 分页查询设备保养计划详情(含到点标红)
     */
    IPage<DeviceMaintenancePlanDetailsDto> pageMaintenancePlanDetail(Page page, Integer planId, String deviceName, String deviceNumber);
    /**
     * 为保养记录找一条可关联的计划明细;没有可用明细时在当前年度计划新增本轮明细
     * @param deviceId 设备id
     * @param maintenancePlanDetailId 指定的计划明细id,为空则自动匹配
     * @param maintenanceDate 保养日期
     */
    DeviceMaintenancePlanDetails resolveMaintenancePlanDetail(Integer deviceId, Integer maintenancePlanDetailId, LocalDate maintenanceDate);
    /**
     * 修改设备保养计划详情(已审核的明细不允许修改)
     */
    boolean updateMaintenancePlanDetail(DeviceMaintenancePlanDetails detail);
    /**
     * 删除设备保养计划详情;已出审核结果的记录随历史留档,未审核的记录随明细一起删除
     */
    boolean removeMaintenancePlanDetail(Integer maintenancePlanDetailId);
    /**
     * 查询计划明细附件列表
     */
    List<DeviceMaintenanceAttachment> selectAttachments(Integer maintenancePlanDetailId);
    /**
     * 上传计划明细附件
     */
    DeviceMaintenanceAttachment uploadAttachment(Integer maintenancePlanDetailId, MultipartFile file);
    /**
     * 删除计划明细附件
     */
    boolean deleteAttachment(Long id);
}