package com.aucma.base.service.impl;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.aucma.base.mapper.BaseDeviceLedgerMapper;
import com.aucma.base.domain.BaseDeviceLedger;
import com.aucma.base.service.IBaseDeviceLedgerService;

/**
 * 设备台账Service业务层处理
 * 
 * @author Yinq
 * @date 2023-09-19
 */
@Service
public class BaseDeviceLedgerServiceImpl implements IBaseDeviceLedgerService 
{
    @Autowired
    private BaseDeviceLedgerMapper baseDeviceLedgerMapper;

    /**
     * 查询设备台账
     * 
     * @param objId 设备台账主键
     * @return 设备台账
     */
    @Override
    public BaseDeviceLedger selectBaseDeviceLedgerByObjId(Long objId)
    {
        return baseDeviceLedgerMapper.selectBaseDeviceLedgerByObjId(objId);
    }

    /**
     * 查询设备台账列表
     * 
     * @param baseDeviceLedger 设备台账
     * @return 设备台账
     */
    @Override
    public List<BaseDeviceLedger> selectBaseDeviceLedgerList(BaseDeviceLedger baseDeviceLedger)
    {
        return baseDeviceLedgerMapper.selectBaseDeviceLedgerList(baseDeviceLedger);
    }

    /**
     * 新增设备台账
     * 
     * @param baseDeviceLedger 设备台账
     * @return 结果
     */
    @Override
    public int insertBaseDeviceLedger(BaseDeviceLedger baseDeviceLedger)
    {
        return baseDeviceLedgerMapper.insertBaseDeviceLedger(baseDeviceLedger);
    }

    /**
     * 修改设备台账
     * 
     * @param baseDeviceLedger 设备台账
     * @return 结果
     */
    @Override
    public int updateBaseDeviceLedger(BaseDeviceLedger baseDeviceLedger)
    {
        return baseDeviceLedgerMapper.updateBaseDeviceLedger(baseDeviceLedger);
    }

    /**
     * 批量删除设备台账
     * 
     * @param objIds 需要删除的设备台账主键
     * @return 结果
     */
    @Override
    public int deleteBaseDeviceLedgerByObjIds(Long[] objIds)
    {
        return baseDeviceLedgerMapper.deleteBaseDeviceLedgerByObjIds(objIds);
    }

    /**
     * 删除设备台账信息
     * 
     * @param objId 设备台账主键
     * @return 结果
     */
    @Override
    public int deleteBaseDeviceLedgerByObjId(Long objId)
    {
        return baseDeviceLedgerMapper.deleteBaseDeviceLedgerByObjId(objId);
    }

    /**
     * 获取设备编号（生成建议编号，用户可修改）
     * 兼容不同类型的编号格式：E00001、SJ_2 等
     * @return
     */
    @Override
    public String getDeviceCode() {
        String deviceCode = baseDeviceLedgerMapper.getDeviceCode();
        // 如果没有设备记录，返回默认编号
        if (deviceCode == null || deviceCode.isEmpty()) {
            return "E00001";
        }
        // 尝试提取数字部分
        String numericPart = deviceCode.replaceAll("[^0-9]", "");
        if (numericPart.isEmpty()) {
            // 没有数字部分，返回默认编号
            return "E00001";
        }
        try {
            // 将数字部分转换为整数并加1
            int incrementedNumber = Integer.parseInt(numericPart) + 1;
            // 格式化加1后的数字部分，确保总长度为5位
            String formattedNumber = String.format("%05d", incrementedNumber);
            // 拼接 'E' 和格式化后的数字部分
            return "E" + formattedNumber;
        } catch (NumberFormatException e) {
            // 解析失败，返回默认编号
            return "E00001";
        }
    }

}
