package com.goer.project.model.dataType.service.impl;

import java.util.Date;
import java.util.List;
import com.goer.common.utils.DateUtils;
import com.goer.project.model.modelField.domain.ModelField;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.goer.project.model.dataType.mapper.DataTypeMapper;
import com.goer.project.model.dataType.domain.DataType;
import com.goer.project.model.dataType.service.IDataTypeService;
import com.goer.common.utils.text.Convert;

/**
 * 数据类型Service业务层处理
 * 
 * @author goer
 * @date 2022-01-17
 */
@Service
public class DataTypeServiceImpl implements IDataTypeService 
{
    @Autowired
    private DataTypeMapper dataTypeMapper;

    /**
     * 查询数据类型
     * 
     * @param id 数据类型主键
     * @return 数据类型
     */
    @Override
    public DataType selectDataTypeById(Long id)
    {
        return dataTypeMapper.selectDataTypeById(id);
    }

    /**
     * 查询数据类型列表
     * 
     * @param dataType 数据类型
     * @return 数据类型
     */
    @Override
    public List<DataType> selectDataTypeList(DataType dataType)
    {
        return dataTypeMapper.selectDataTypeList(dataType);
    }

    /**
     * 新增数据类型
     * 
     * @param dataType 数据类型
     * @return 结果
     */
    @Override
    public int insertDataType(DataType dataType)
    {
        int sort = dataTypeMapper.selectMaxDataSort(dataType);
        dataType.setDataSort(sort);
        dataType.setCreateTime(DateUtils.getNowDate());
        return dataTypeMapper.insertDataType(dataType);
    }

    /**
     * 修改数据类型
     * 
     * @param dataType 数据类型
     * @return 结果
     */
    @Override
    public int updateDataType(DataType dataType)
    {
        dataType.setUpdateTime(DateUtils.getNowDate());
        return dataTypeMapper.updateDataType(dataType);
    }

    /**
     * 批量删除数据类型
     * 
     * @param ids 需要删除的数据类型主键
     * @return 结果
     */
    @Override
    public int deleteDataTypeByIds(String ids)
    {
        return dataTypeMapper.deleteDataTypeByIds(Convert.toStrArray(ids));
    }

    /**
     * 删除数据类型信息
     * 
     * @param id 数据类型主键
     * @return 结果
     */
    @Override
    public int deleteDataTypeById(Long id)
    {
        return dataTypeMapper.deleteDataTypeById(id);
    }


    /**
     * 排序
     *
     * @param dataType
     * @return
     */
    @Override
    public int sort(DataType dataType) {
        int result = 0;

        int pageSize = 10;
        int pageNumber = 1;
        Object pz = dataType.getParams().get("pageSize");
        if (pz != null) {
            pageSize = Convert.toInt(pz, 10);
        }
        Object pn = dataType.getParams().get("pageNumber");
        if (pn != null) {
            pageNumber = Convert.toInt(pn, 1);
        }

        List<DataType> list = dataType.getPramsByName("sortData", DataType.class);
        if(list != null && !list.isEmpty()) {
            int idx = pageSize * (pageNumber - 1) + 1;
            for(DataType mf : list) {
                mf.setUpdateBy(dataType.getUpdateBy());
                mf.setUpdateTime(dataType.getUpdateTime());
                mf.setDataSort(idx ++);
            }
            result = result +  dataTypeMapper.updateList(list);
        }
        return result;
    }
}
