package com.xzzn.ems.service.impl;

import java.util.List;

import com.alibaba.fastjson2.JSON;
import com.xzzn.common.utils.DateUtils;
import com.xzzn.common.utils.StringUtils;
import com.xzzn.ems.domain.EmsAlarmRecords;
import com.xzzn.ems.service.IFXXAlarmDataProcessService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.xzzn.ems.mapper.EmsFaultIssueLogMapper;
import com.xzzn.ems.domain.EmsFaultIssueLog;
import com.xzzn.ems.service.IEmsFaultIssueLogService;

/**
 * 告警保护方案下发日志Service业务层处理
 *
 * @author xzzn
 * @date 2025-11-15
 */
@Service
public class EmsFaultIssueLogServiceImpl implements IEmsFaultIssueLogService
{
    @Autowired
    private EmsFaultIssueLogMapper emsFaultIssueLogMapper;

    /**
     * 查询告警保护方案下发日志
     *
     * @param id 告警保护方案下发日志主键
     * @return 告警保护方案下发日志
     */
    @Override
    public EmsFaultIssueLog selectEmsFaultIssueLogById(Long id)
    {
        return emsFaultIssueLogMapper.selectEmsFaultIssueLogById(id);
    }

    /**
     * 新增告警保护方案下发日志
     *
     * @param emsFaultIssueLog 告警保护方案下发日志
     * @return 结果
     */
    @Override
    public int insertEmsFaultIssueLog(EmsFaultIssueLog emsFaultIssueLog)
    {
        emsFaultIssueLog.setCreateTime(DateUtils.getNowDate());
        return emsFaultIssueLogMapper.insertEmsFaultIssueLog(emsFaultIssueLog);
    }

    /**
     * 查询告警保护方案下发日志列表
     *
     * @param emsFaultIssueLog 告警保护方案下发日志
     * @return 告警保护方案下发日志
     */
    @Override
    public List<EmsFaultIssueLog> selectEmsFaultIssueLogList(EmsFaultIssueLog emsFaultIssueLog)
    {
        return emsFaultIssueLogMapper.selectEmsFaultIssueLogList(emsFaultIssueLog);
    }

    /**
     * 修改告警保护方案下发日志
     *
     * @param emsFaultIssueLog 告警保护方案下发日志
     * @return 结果
     */
    @Override
    public int updateEmsFaultIssueLog(EmsFaultIssueLog emsFaultIssueLog)
    {
        emsFaultIssueLog.setUpdateTime(DateUtils.getNowDate());
        return emsFaultIssueLogMapper.updateEmsFaultIssueLog(emsFaultIssueLog);
    }

    /**
     * 批量删除告警保护方案下发日志
     *
     * @param ids 需要删除的告警保护方案下发日志主键
     * @return 结果
     */
    @Override
    public int deleteEmsFaultIssueLogByIds(Long[] ids)
    {
        return emsFaultIssueLogMapper.deleteEmsFaultIssueLogByIds(ids);
    }

    /**
     * 删除告警保护方案下发日志信息
     *
     * @param id 告警保护方案下发日志主键
     * @return 结果
     */
    @Override
    public int deleteEmsFaultIssueLogById(Long id)
    {
        return emsFaultIssueLogMapper.deleteEmsFaultIssueLogById(id);
    }

    @Override
    public void dealSyncData(String content, String operateType) {
        if (StringUtils.isEmpty(content)) {
            return;
        }

        EmsFaultIssueLog issueLog = JSON.parseObject(content, EmsFaultIssueLog.class);
        String logId = issueLog.getLogId();
        if (checkLogIsExist(logId)) {
            return;
        }
        switch(operateType) {
            case "INSERT":
                insertEmsFaultIssueLog(issueLog);
                break;
            default:
                break;
        }
    }

    private boolean checkLogIsExist(String logId) {
        EmsFaultIssueLog issueLog = emsFaultIssueLogMapper.selectEmsFaultIssueLogByLogId(logId);
        if (issueLog != null) {
            return true;
        }
        return false;
    }
}
