package com.ruoyi.project.pssr.service.impl;

import com.ruoyi.project.pssr.domain.TPssrFile;
import com.ruoyi.project.pssr.mapper.TPssrFileMapper;
import com.ruoyi.project.pssr.service.ITPssrFileService;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * PSSR附件Service业务层处理
 *
 * @author ssy
 * @date 2024-10-30
 */
@Service
public class TPssrFileServiceImpl implements ITPssrFileService {
    @Autowired
    private TPssrFileMapper tPssrFileMapper;

    /**
     * 查询PSSR附件
     *
     * @param fileId PSSR附件ID
     * @return PSSR附件
     */
    @Override
    public TPssrFile selectTPssrFileById(Long fileId) {
        return tPssrFileMapper.selectTPssrFileById(fileId);
    }

    /**
     * 查询PSSR附件列表
     *
     * @param tPssrFile PSSR附件
     * @return PSSR附件
     */
    @Override
    public List<TPssrFile> selectTPssrFileList(TPssrFile tPssrFile) {
        return tPssrFileMapper.selectTPssrFileList(tPssrFile);
    }

    @Override
    public List<TPssrFile> selectTPssrFileListByItem(Long subId, Long itemId, String forShort) {
        TPssrFile tPssrFile = new TPssrFile();
        tPssrFile.setItemId(itemId);
        tPssrFile.setSubId(subId);
        tPssrFile.setForShort(forShort);
        return tPssrFileMapper.selectTPssrFileList(tPssrFile);
    }

    /**
     * 新增PSSR附件
     *
     * @param tPssrFile PSSR附件
     * @return 结果
     */
    @Override
    public int insertTPssrFile(TPssrFile tPssrFile) {
        return tPssrFileMapper.insertTPssrFile(tPssrFile);
    }

    /**
     * 修改PSSR附件
     *
     * @param tPssrFile PSSR附件
     * @return 结果
     */
    @Override
    public int updateTPssrFile(TPssrFile tPssrFile) {
        return tPssrFileMapper.updateTPssrFile(tPssrFile);
    }

    /**
     * 批量删除PSSR附件
     *
     * @param fileIds 需要删除的PSSR附件ID
     * @return 结果
     */
    @Override
    public int deleteTPssrFileByIds(Long[] fileIds) {
        return tPssrFileMapper.deleteTPssrFileByIds(fileIds);
    }

    /**
     * 删除PSSR附件信息
     *
     * @param fileId PSSR附件ID
     * @return 结果
     */
    @Override
    public int deleteTPssrFileById(Long fileId) {
        return tPssrFileMapper.deleteTPssrFileById(fileId);
    }

    @Override
    public void updateFileRelevance(List<Long> fileIds, String forShort, Long itemId, Long subId) {
        if (!CollectionUtils.isNotEmpty(fileIds)) {
            return;
        }
        if (fileIds.get(0) == -1) {
            TPssrFile query = new TPssrFile();
            query.setSubId(subId);
            query.setItemId(itemId);
            query.setForShort(forShort);
            for (TPssrFile exist : tPssrFileMapper.selectTPssrFileList(query)) {
                tPssrFileMapper.deleteTPssrFileById(exist.getFileId());
            }
            return;
        }
        // 更新附件信息
        for (Long fileId : fileIds) {
            TPssrFile pssrFile = new TPssrFile();
            pssrFile.setSubId(subId);
            pssrFile.setItemId(itemId);
            pssrFile.setForShort(forShort);
            pssrFile.setFileId(fileId);
            tPssrFileMapper.updateTPssrFile(pssrFile);
        }
        // 如果已有附件不属于当前id集合中，删除
        TPssrFile query = new TPssrFile();
        query.setSubId(subId);
        query.setItemId(itemId);
        query.setForShort(forShort);
        for (TPssrFile exist : tPssrFileMapper.selectTPssrFileList(query)) {
            if (!fileIds.contains(exist.getFileId())) {
                tPssrFileMapper.deleteTPssrFileById(exist.getFileId());
            }
        }
    }
}
