package top.imwork.window.silos.convert;

import org.springframework.util.ObjectUtils;
import top.imwork.window.silos.entity.upms.SysRole;
import top.imwork.window.silos.pojo.bo.SysRoleBO;
import top.imwork.window.silos.pojo.bo.SysRoleResultBO;
import top.imwork.window.silos.pojo.dto.SysRoleListDTO;
import top.imwork.window.silos.pojo.po.SysRoleListParamVO;
import top.imwork.window.silos.pojo.po.SysRoleParamVO;
import top.imwork.window.silos.pojo.vo.SysRoleResultVO;
import top.imwork.window.silos.pojo.vo.SysRoleVO;
import top.imwork.window.silos.pojo.dto.SysRoleDTO;

import java.util.ArrayList;
import java.util.List;

/**
 * 角色信息
 * 实体转换
 *
 * @author jiangxiaowei
 * email: e-jiangxiaowei@outlook.com
 * date: 2025-12-09 16:29:22
 */
public class SysRoleConvert {
    private SysRoleConvert() {}

    public static SysRole sysRoleDtoToDo(SysRoleDTO sysRoleDTO) {
        if (sysRoleDTO == null) {
            return null;
        }
        SysRole sysRole = new SysRole();
        sysRole.setId(sysRoleDTO.getId());
        sysRole.setParentId(sysRoleDTO.getParentId());
        sysRole.setParentIds(sysRoleDTO.getParentIds());
        sysRole.setRoleName(sysRoleDTO.getRoleName());
        sysRole.setRoleType(sysRoleDTO.getRoleType());
        sysRole.setRoleDesc(sysRoleDTO.getRoleDesc());
        sysRole.setRoleLevel(sysRoleDTO.getRoleLevel());
        sysRole.setIsSys(sysRoleDTO.getIsSys());
        sysRole.setEnabled(sysRoleDTO.getEnabled());
        sysRole.setSort(sysRoleDTO.getSort());
        sysRole.setState(sysRoleDTO.getState());
        sysRole.setStatus(sysRoleDTO.getStatus());
        sysRole.setDelFlag(sysRoleDTO.getDelFlag());
        sysRole.setCreator(sysRoleDTO.getCreator());
        sysRole.setCreateTime(sysRoleDTO.getCreateTime());
        sysRole.setModifier(sysRoleDTO.getModifier());
        sysRole.setUpdateTime(sysRoleDTO.getUpdateTime());
        sysRole.setRemark(sysRoleDTO.getRemark());
        return sysRole;
    }

    public static SysRoleBO sysRoleDoToBo(SysRole sysRole) {
        if (sysRole == null) {
            return null;
        }
        SysRoleBO sysRoleBO = new SysRoleBO();
        sysRoleBO.setId(sysRole.getId());
        sysRoleBO.setParentId(sysRole.getParentId());
        sysRoleBO.setParentIds(sysRole.getParentIds());
        sysRoleBO.setRoleName(sysRole.getRoleName());
        sysRoleBO.setRoleType(sysRole.getRoleType());
        sysRoleBO.setRoleDesc(sysRole.getRoleDesc());
        sysRoleBO.setRoleLevel(sysRole.getRoleLevel());
        sysRoleBO.setIsSys(sysRole.getIsSys());
        sysRoleBO.setEnabled(sysRole.getEnabled());
        sysRoleBO.setSort(sysRole.getSort());
        sysRoleBO.setState(sysRole.getState());
        sysRoleBO.setStatus(sysRole.getStatus());
        sysRoleBO.setDelFlag(sysRole.getDelFlag());
        sysRoleBO.setCreator(sysRole.getCreator());
        sysRoleBO.setCreateTime(sysRole.getCreateTime());
        sysRoleBO.setModifier(sysRole.getModifier());
        sysRoleBO.setUpdateTime(sysRole.getUpdateTime());
        sysRoleBO.setRemark(sysRole.getRemark());
        return sysRoleBO;
    }

    public static SysRoleDTO sysRoleParamVoToDto(SysRoleParamVO sysRoleParamVO) {
        if (sysRoleParamVO == null) {
            return null;
        }
        SysRoleDTO sysRoleDTO = new SysRoleDTO();
        sysRoleDTO.setId(sysRoleParamVO.getId());
        sysRoleDTO.setParentId(sysRoleParamVO.getParentId());
        sysRoleDTO.setParentIds(sysRoleParamVO.getParentIds());
        sysRoleDTO.setRoleName(sysRoleParamVO.getRoleName());
        sysRoleDTO.setRoleType(sysRoleParamVO.getRoleType());
        sysRoleDTO.setRoleDesc(sysRoleParamVO.getRoleDesc());
        sysRoleDTO.setRoleLevel(sysRoleParamVO.getRoleLevel());
        sysRoleDTO.setIsSys(sysRoleParamVO.getIsSys());
        sysRoleDTO.setEnabled(sysRoleParamVO.getEnabled());
        sysRoleDTO.setSort(sysRoleParamVO.getSort());
        sysRoleDTO.setState(sysRoleParamVO.getState());
        sysRoleDTO.setStatus(sysRoleParamVO.getStatus());
        sysRoleDTO.setDelFlag(sysRoleParamVO.getDelFlag());
        sysRoleDTO.setCreator(sysRoleParamVO.getCreator());
        sysRoleDTO.setCreateTime(sysRoleParamVO.getCreateTime());
        sysRoleDTO.setModifier(sysRoleParamVO.getModifier());
        sysRoleDTO.setUpdateTime(sysRoleParamVO.getUpdateTime());
        sysRoleDTO.setRemark(sysRoleParamVO.getRemark());
        return sysRoleDTO;
    }

    public static List<SysRoleBO> sysRoleListToSysRoleBOList(List<SysRole> records) {
         if (ObjectUtils.isEmpty(records)) {
             return new ArrayList<>();
         }
         List<SysRoleBO> sysRoleBOList = new ArrayList<>();
         for (SysRole sysRole : records) {
             sysRoleBOList.add(sysRoleDoToBo(sysRole));
         }
         return sysRoleBOList;
    }

    public static SysRoleVO sysRoleBoToVo(SysRoleBO sysRoleBO) {
        if (sysRoleBO == null) {
            return null;
        }
        SysRoleVO sysRoleVO = new SysRoleVO();
        sysRoleVO.setId(sysRoleBO.getId());
        sysRoleVO.setParentId(sysRoleBO.getParentId());
        sysRoleVO.setParentIds(sysRoleBO.getParentIds());
        sysRoleVO.setRoleName(sysRoleBO.getRoleName());
        sysRoleVO.setRoleType(sysRoleBO.getRoleType());
        sysRoleVO.setRoleDesc(sysRoleBO.getRoleDesc());
        sysRoleVO.setRoleLevel(sysRoleBO.getRoleLevel());
        sysRoleVO.setIsSys(sysRoleBO.getIsSys());
        sysRoleVO.setEnabled(sysRoleBO.getEnabled());
        sysRoleVO.setSort(sysRoleBO.getSort());
        sysRoleVO.setState(sysRoleBO.getState());
        sysRoleVO.setStatus(sysRoleBO.getStatus());
        sysRoleVO.setDelFlag(sysRoleBO.getDelFlag());
        sysRoleVO.setCreator(sysRoleBO.getCreator());
        sysRoleVO.setCreateTime(sysRoleBO.getCreateTime());
        sysRoleVO.setModifier(sysRoleBO.getModifier());
        sysRoleVO.setUpdateTime(sysRoleBO.getUpdateTime());
        sysRoleVO.setRemark(sysRoleBO.getRemark());
        return sysRoleVO;
    }

    public static SysRoleListDTO sysRoleListParamVoToDTO(SysRoleListParamVO sysRoleListParamVO) {
        if (sysRoleListParamVO == null) {
            return null;
        }
        SysRoleListDTO sysRoleListDTO = new SysRoleListDTO();
        sysRoleListDTO.setRoleName(sysRoleListParamVO.getRoleName());
        sysRoleListDTO.setRoleType(sysRoleListParamVO.getRoleType());
        sysRoleListDTO.setEnabled(sysRoleListParamVO.getEnabled());
        sysRoleListDTO.setPageNo(sysRoleListParamVO.getPageNo());
        sysRoleListDTO.setPageRows(sysRoleListParamVO.getPageRows());
        sysRoleListDTO.setDelFlag(sysRoleListParamVO.getDelFlag());
        sysRoleListDTO.setCreator(sysRoleListParamVO.getCreator());
        sysRoleListDTO.setCreateBeginTime(sysRoleListParamVO.getCreateBeginTime());
        sysRoleListDTO.setCreateEndTime(sysRoleListParamVO.getCreateEndTime());
        sysRoleListDTO.setModifier(sysRoleListParamVO.getModifier());
        sysRoleListDTO.setUpdateBeginTime(sysRoleListParamVO.getUpdateBeginTime());
        sysRoleListDTO.setUpdateEndTime(sysRoleListParamVO.getUpdateEndTime());
        sysRoleListDTO.setRemark(sysRoleListParamVO.getRemark());
        return sysRoleListDTO;
    }

    public static SysRoleListParamVO sysRoleListParamDtoToVo(SysRoleListDTO sysRoleListDTO) {
        if (sysRoleListDTO == null) {
            return null;
        }
        SysRoleListParamVO sysRoleListParamVO = new SysRoleListParamVO();
        sysRoleListParamVO.setRoleName(sysRoleListDTO.getRoleName());
        sysRoleListParamVO.setRoleType(sysRoleListDTO.getRoleType());
        sysRoleListParamVO.setEnabled(sysRoleListDTO.getEnabled());
        sysRoleListParamVO.setPageNo(sysRoleListDTO.getPageNo());
        sysRoleListParamVO.setPageRows(sysRoleListDTO.getPageRows());
        sysRoleListParamVO.setDelFlag(sysRoleListDTO.getDelFlag());
        sysRoleListParamVO.setCreator(sysRoleListDTO.getCreator());
        sysRoleListParamVO.setCreateBeginTime(sysRoleListDTO.getCreateBeginTime());
        sysRoleListParamVO.setCreateEndTime(sysRoleListDTO.getCreateEndTime());
        sysRoleListParamVO.setModifier(sysRoleListDTO.getModifier());
        sysRoleListParamVO.setUpdateBeginTime(sysRoleListDTO.getUpdateBeginTime());
        sysRoleListParamVO.setUpdateEndTime(sysRoleListDTO.getUpdateEndTime());
        sysRoleListParamVO.setRemark(sysRoleListDTO.getRemark());
        return sysRoleListParamVO;
    }

    public static List<SysRoleVO> sysRoleBoListToSysRoleVoList(List<SysRoleBO> dataList) {
        if (ObjectUtils.isEmpty(dataList)) {
            return new ArrayList<>();
        }
        List<SysRoleVO> sysRoleVOList = new ArrayList<>();
        for (SysRoleBO sysRoleBO : dataList) {
             sysRoleVOList.add(sysRoleBoToVo(sysRoleBO));
        }
        return sysRoleVOList;
    }

    public static SysRoleResultVO sysRoleResultBoToVo(SysRoleResultBO sysRoleResultBO) {
        if (sysRoleResultBO == null) {
            return new SysRoleResultVO();
        }
        SysRoleResultVO sysRoleResultVO = new SysRoleResultVO();
        sysRoleResultVO.setPageNo(sysRoleResultBO.getPageNo());
        sysRoleResultVO.setPageRows(sysRoleResultBO.getPageRows());
        sysRoleResultVO.setPageCount(sysRoleResultBO.getPageCount());
        sysRoleResultVO.setTotalRows(sysRoleResultBO.getTotalRows());
        sysRoleResultVO.setDataList(sysRoleBoListToSysRoleVoList(sysRoleResultBO.getDataList()));
        sysRoleResultVO.setParams(sysRoleListParamDtoToVo(sysRoleResultBO.getParams()));
        return sysRoleResultVO;
    }
}