package com.sifang.modules.sys.service;

import com.jfinal.plugin.activerecord.Record;
import com.sifang.modules.customer.utils.EmployeRoleUtils;
import com.sifang.modules.sunshine.SystemSetting.utils.BusinessException;
import com.sifang.modules.sunshine.SystemSetting.utils.Result;
import com.sifang.modules.sunshine.SystemSetting.utils.StringUtil;
import com.sifang.modules.supply.stock.entity.SupplyMaterial;
import com.sifang.modules.sys.common.UserUtils;
import com.sifang.modules.sys.common.entity.User;
import com.sifang.modules.sys.common.service.BaseService;
import com.sifang.modules.sys.dao.SysCapitalDictDao;
import com.sifang.modules.sys.entity.SysCapitalDict;
import com.sifang.modules.sys.util.LayuiPage;
import com.sifang.modules.sys.vo.SysCapitalDictVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @title: SysCapitalDictService
 * @Author Tan
 * @Date: 2024/7/4 17:39
 * @Version 1.0
 */
@Service
public class SysCapitalDictService extends BaseService {

    @Autowired
    private SysCapitalDictDao dictDao;


    /**
     * 字典项分页列表
     * @param page
     * @param map
     * @return
     */
    public LayuiPage<Record> findCapitalDictPage(LayuiPage<Record> page, Map<String,String> map) {
        List<Record> list = dictDao.getParentDictionaryList(page, map);
        page.setData(list);
        page.setCount(dictDao.queryParentDictCount(map));
        return page;
    }

    /**
     *新增或修改
     * @param sysCapitalDict
     */
    @Transactional(rollbackFor = Exception.class)
    public Result saveOreditCapitalDict(SysCapitalDict sysCapitalDict,Result result){
        Map<String,String> map = new HashMap<>();
        map.put("capitalId",sysCapitalDict.getCapitalId());
        map.put("code",sysCapitalDict.getCode());
        Long num = dictDao.queryParentDictCount(map);
            if(StringUtil.isNotBlank(sysCapitalDict.getId())) {
                String sid = dictDao.getDictId(sysCapitalDict.getId());
                if(sysCapitalDict.getId().equals(sid)){
                    sysCapitalDict.setIsDeleted(0);
                    sysCapitalDict.setStatus(1);
                    sysCapitalDict.setIsSealed(0);
                    dictDao.save(sysCapitalDict);
                    result.setCode("200");
                }else{
                    if(num>0){
                        result.setCode("206");
                        result.setMsg("同一资方不可添加重复数据");
                    }
                }
            }else{
                if(num>0){
                    result.setCode("206");
                    result.setMsg("同一资方不可添加重复数据");
                }else{
                    sysCapitalDict.setIsDeleted(0);
                    sysCapitalDict.setStatus(1);
                    sysCapitalDict.setIsSealed(0);
                    dictDao.save(sysCapitalDict);
                    result.setCode("200");
                }
            }
        return result;
    }

    /**
     * 删除
     * @param id
     * @return
     */
    public Result delCapitalDict(String id){
        SysCapitalDict dictVo = dictDao.get(id);
        dictVo.setIsDeleted(1);
        dictDao.save(dictVo);
        return Result.ok();
    }

    /**
     * 更新状态
     * @param id
     * @param status
     * @return
     */
    public Result updateCapitalDictStatus(String id,int status){
        SysCapitalDict dictVo = dictDao.get(id);
        dictVo.setStatus(status);
        dictDao.save(dictVo);
        return Result.ok();
    }

    public SysCapitalDict getById(String id){
        return dictDao.get(id);
    }

}