package com.bbitcn.silk.utils.database;

import com.bbitcn.silk.model.net.QueryList;
import com.bbitcn.silk.model.net.ToTareSubmit;
import com.bbitcn.silk.utils.MMKVUtil;
import com.bbitcn.silk.utils.log.MyLog;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

import java.util.Iterator;
import java.util.List;

/**
 * @Description TODO
 * @Author DuanKaiji
 * @CreateTime 2024年04月03日 15:20:10
 */
public class TareDataBase {

    public static final String TARE_CATCH = "TARE_CATCH";


    /**
     * 获取缓存
     *
     * @return
     */
    public static ToTareSubmit.ItemsDTO getCatchById(String id) {
        String json = MMKVUtil.get(TARE_CATCH, "[]");
        List<ToTareSubmit.ItemsDTO> temp = new Gson().fromJson(json, new TypeToken<List<ToTareSubmit.ItemsDTO>>() {
        }.getType());
        for (ToTareSubmit.ItemsDTO itemsDTO : temp) {
            if (itemsDTO.getSgtypesysid().equals(id)) {
                return itemsDTO;
            }
        }
        return null;
    }

    /**
     * 更新缓存
     * 注意：sgtypesysid
     *
     * @param data
     */
    public static void updateCatch(ToTareSubmit.ItemsDTO data) {
        String json = MMKVUtil.get(TARE_CATCH, "[]");
        List<ToTareSubmit.ItemsDTO> temp = new Gson().fromJson(json, new TypeToken<List<ToTareSubmit.ItemsDTO>>() {
        }.getType());
        //判断是否有重复 则删除重复数据
        for (int i = 0; i < temp.size(); i++) {
            if (temp.get(i).equals(data)) {
                temp.remove(i);
                break;
            }
        }
        temp.add(data);
        MMKVUtil.put(TARE_CATCH, new Gson().toJson(temp));
    }

    /**
     * 清除缓存
     */
    public static void removeCatch() {
        MMKVUtil.put(TARE_CATCH, "[]");
    }

    /**
     * 清除指定缓存
     */
    public static void removeCatchById(QueryList.DataDTO dataDTO) {
        String json = MMKVUtil.get(TARE_CATCH, "[]");
        List<ToTareSubmit.ItemsDTO> temp = new Gson().fromJson(json, new TypeToken<List<ToTareSubmit.ItemsDTO>>() {
        }.getType());
        // 涉及列表删除 使用迭代器进行删除
        Iterator<ToTareSubmit.ItemsDTO> iterator = temp.iterator();
        while (iterator.hasNext()) {
            ToTareSubmit.ItemsDTO item = iterator.next();
            for (QueryList.DataDTO.ItemsDTO itemsDTO : dataDTO.getItems()) {
                if (item.getSgtypesysid().equals(dataDTO.getCzSysid() + itemsDTO.getSgTypeSysid())) {
                    iterator.remove();
                    break;
                }
            }
        }
        MMKVUtil.put(TARE_CATCH, new Gson().toJson(temp));
    }

}
