package com.yunyan.business.document.utils;

import cn.hutool.json.JSONUtil;
import com.yunyan.business.pojo.admin.vo.FinalDataDownloadFileItemVo;
import com.yunyan.business.pojo.admin.vo.FinalDataDownloadFileVo;
import com.yunyan.common.constant.Constants;
import com.yunyan.common.utils.NumberFormatUtils;
import com.yunyan.common.utils.StringUtils;
import com.yunyan.common.utils.file.FileUtils;
import lombok.extern.slf4j.Slf4j;

import java.util.LinkedHashMap;
import java.util.List;

@Slf4j
public class FileDataUtil {

    public static void main(String[] args) {

    }

    /**
     * 删除 生成的 报告文件
     * @param localPath 本地路径
     * @param jsonFileContent json的URL对象
     * @param pdfUrl pdf路径
     * @return
     */
    public static boolean deleteUrlFile(String localPath, String jsonFileContent, String pdfUrl) {
        boolean res = true;
        //记录之前的旧文件路径, 判断是否存在, 存在就删除
        if(StringUtils.isNotBlank(jsonFileContent)) {
            FinalDataDownloadFileVo fileOldVo = JSONUtil.toBean(jsonFileContent, FinalDataDownloadFileVo.class);
            String pdfUrlOld = pdfUrl;
            if(null != fileOldVo && !fileOldVo.getList().isEmpty()) {
                for (FinalDataDownloadFileItemVo fileItemVo : fileOldVo.getList() ) {
                    if(StringUtils.isBlank(fileItemVo.getUrl())) {
                        continue;
                    }
                    try {
                        String absolutePathName = localPath + StringUtils.substringAfter(fileItemVo.getUrl(), Constants.RESOURCE_PREFIX);
                        FileUtils.deleteFile(absolutePathName);
                    } catch (Exception e) {
                        log.error("删除源文件 异常 [{}] ,  [{}]", e.getMessage(), e);
                    }
                }
            }
            if(StringUtils.isNotBlank(pdfUrlOld)) {
                try {
                    String absolutePathName = localPath + StringUtils.substringAfter(pdfUrlOld, Constants.RESOURCE_PREFIX);
                    FileUtils.deleteFile(absolutePathName);
                } catch (Exception e) {
                    log.error("删除源文件 异常 [{}] ,  [{}]", e.getMessage(), e);
                }
            }
        }

        return res;
    }

    /**
     * 只删除 某些类型的文件
     * @param localPath
     * @param jsonFileContent
     * @param pdfUrl
     * @param typeList 删除的类型
     * @return
     */
    public static boolean deleteUrlFile(String localPath, String jsonFileContent, String pdfUrl, List<Integer> typeList) {
        boolean res = true;
        //记录之前的旧文件路径, 判断是否存在, 存在就删除
        if(StringUtils.isNotBlank(jsonFileContent)) {
            FinalDataDownloadFileVo fileOldVo = JSONUtil.toBean(jsonFileContent, FinalDataDownloadFileVo.class);
            String pdfUrlOld = pdfUrl;
            if(null != fileOldVo && !fileOldVo.getList().isEmpty()) {
                for (FinalDataDownloadFileItemVo fileItemVo : fileOldVo.getList() ) {
                    if(StringUtils.isBlank(fileItemVo.getUrl())) {
                        continue;
                    }
                    if(null != fileItemVo.getType() && !typeList.contains(fileItemVo.getType()) ) {
                        continue;
                    }
                    try {
                        String absolutePathName = localPath + StringUtils.substringAfter(fileItemVo.getUrl(), Constants.RESOURCE_PREFIX);
                        FileUtils.deleteFile(absolutePathName);
                    } catch (Exception e) {
                        log.error("删除源文件 异常 [{}] ,  [{}]", e.getMessage(), e);
                    }
                }
            }
            if(StringUtils.isNotBlank(pdfUrlOld)) {
                try {
                    String absolutePathName = localPath + StringUtils.substringAfter(pdfUrlOld, Constants.RESOURCE_PREFIX);
                    FileUtils.deleteFile(absolutePathName);
                } catch (Exception e) {
                    log.error("删除源文件 异常 [{}] ,  [{}]", e.getMessage(), e);
                }
            }
        }

        return res;
    }

}
