package com.ruoyi.shipping.service.impl;

import java.util.*;
import java.util.stream.Collectors;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.shipping.domain.TTemporaryFile;
import com.ruoyi.shipping.mapper.TTemporaryFileMapper;
import com.ruoyi.shipping.service.ITTemporaryFileService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * 凯和商务端上传箱信息暂存数据Service业务层处理
 * 
 * @author ruoyi
 * @date 2021-07-01
 */
@Service
public class TTemporaryFileServiceImpl implements ITTemporaryFileService
{
    @Autowired
    private TTemporaryFileMapper tTemporaryFileMapper;

    /**
     * 查询凯和商务端上传箱信息暂存数据
     * 
     * @param fId 凯和商务端上传箱信息暂存数据ID
     * @return 凯和商务端上传箱信息暂存数据
     */
    @Override
    public TTemporaryFile selectTTemporaryFileById(Long fId)
    {
        return tTemporaryFileMapper.selectTTemporaryFileById(fId);
    }

    /**
     * 查询凯和商务端上传箱信息暂存数据列表
     * 
     * @param tTemporaryFile 凯和商务端上传箱信息暂存数据
     * @return 凯和商务端上传箱信息暂存数据
     */
    @Override
    public List<TTemporaryFile> selectTTemporaryFileList(TTemporaryFile tTemporaryFile,LoginUser loginUser)
    {
        List<TTemporaryFile> tTemporaryFiles = new ArrayList<>();
        tTemporaryFiles = tTemporaryFileMapper.selectTTemporaryFileMessage(tTemporaryFile);
        /*if (StringUtils.isNotEmpty(tTemporaryFile.gettTemporaryFileList()) && !"[]".equals(tTemporaryFile.gettTemporaryFileList())){
            JSONArray jsonCrArray = JSONArray.parseArray(tTemporaryFile.gettTemporaryFileList());
            List<TTemporaryFile> fileList = JSONObject.parseArray(jsonCrArray.toJSONString(), TTemporaryFile.class);
            if (CollectionUtils.isNotEmpty(fileList)){
                for (TTemporaryFile temporaryFile : fileList) {
                    temporaryFile.setCreateBy(loginUser.getUser().getUserName());
                    temporaryFile.setCreateTime(new Date());
                    tTemporaryFileMapper.insertTTemporaryFile(tTemporaryFile);
                }
            }*/
            ArrayList<TTemporaryFile> collect = tTemporaryFiles.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(TTemporaryFile -> TTemporaryFile.getfCntrno()
            ))), ArrayList::new));
        /*}*/
        return collect;
    }

    /**
     * 新增凯和商务端上传箱信息暂存数据
     * 
     * @param tTemporaryFile 凯和商务端上传箱信息暂存数据
     * @return 结果
     */
    @Override
    public int insertTTemporaryFile(TTemporaryFile tTemporaryFile,LoginUser loginUser)
    {
        int i = 0;
        if (StringUtils.isNotEmpty(tTemporaryFile.gettTemporaryFileList()) && !"[]".equals(tTemporaryFile.gettTemporaryFileList())) {
            JSONArray jsonCrArray = JSONArray.parseArray(tTemporaryFile.gettTemporaryFileList());
            List<TTemporaryFile> fileList = JSONObject.parseArray(jsonCrArray.toJSONString(), TTemporaryFile.class);
            if (CollectionUtils.isNotEmpty(fileList)) {
                for (TTemporaryFile temporaryFile : fileList) {
                    temporaryFile.setCreateBy(loginUser.getUser().getUserName());
                    temporaryFile.setCreateTime(new Date());
                    i = tTemporaryFileMapper.insertTTemporaryFile(tTemporaryFile);
                }
            }
        }
        return i;
    }

    /**
     * 修改凯和商务端上传箱信息暂存数据
     * 
     * @param tTemporaryFile 凯和商务端上传箱信息暂存数据
     * @return 结果
     */
    @Override
    public int updateTTemporaryFile(TTemporaryFile tTemporaryFile)
    {
        return tTemporaryFileMapper.updateTTemporaryFile(tTemporaryFile);
    }

    /**
     * 批量删除凯和商务端上传箱信息暂存数据
     * 
     * @param fIds 需要删除的凯和商务端上传箱信息暂存数据ID
     * @return 结果
     */
    @Override
    public int deleteTTemporaryFileByIds(Long[] fIds)
    {
        return tTemporaryFileMapper.deleteTTemporaryFileByIds(fIds);
    }

    /**
     * 删除凯和商务端上传箱信息暂存数据信息
     * 
     * @param fId 凯和商务端上传箱信息暂存数据ID
     * @return 结果
     */
    @Override
    public int deleteTTemporaryFileById(Long fId)
    {
        return tTemporaryFileMapper.deleteTTemporaryFileById(fId);
    }

    @Override
    public int deleteTTemporaryFilefileName(String fileName,String createBy) {
        return tTemporaryFileMapper.deleteTTemporaryFilefileName(fileName,createBy);
    }
}
