package com.bonus.material.countersign.service.impl;

import com.bonus.common.core.exception.ServiceException;
import com.bonus.common.core.utils.DateUtils;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.material.countersign.domain.SignConfigVo;
import com.bonus.material.countersign.mapper.SignConfigMapper;
import com.bonus.material.countersign.service.ISignConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 会签配置管理Service业务层处理
 * 
 * @author hongchao
 * @date 2025-01-16
 */
@Service
public class SignConfigServiceImpl implements ISignConfigService
{
    @Autowired
    private SignConfigMapper signConfigMapper;

    /**
     * 查询会签配置管理列表
     * 
     * @param signConfigVo 会签配置管理
     * @return 会签配置管理
     */
    @Override
    public List<SignConfigVo> getList(SignConfigVo signConfigVo) {
        return signConfigMapper.getList(signConfigVo);
    }

    /**
     * 新增会签配置管理
     *
     * @param signConfigVo 会签配置管理
     * @return 结果
     */
    @Override
    public AjaxResult insertConfigInfo(SignConfigVo signConfigVo)
    {
        try {
            int count = signConfigMapper.selectConfigRepeat(signConfigVo);
            if(count > 0){
                return AjaxResult.error("同时存在相同流程名称和会签类型，请重新选择新增");
            }
            int countTwo =  signConfigMapper.insertConfigInfo(signConfigVo);
            if(countTwo == 1){
                return AjaxResult.success();
            }
            return AjaxResult.error("会签配置新增失败");
        } catch (Exception e) {
            return AjaxResult.error();
        }
    }

    /**
     * 查询会签配置管理详情
     *
     * @param id 主键
     * @return 会签配置管理
     */
    @Override
    public SignConfigVo selectConfigInfoById(Long id)
    {
        return signConfigMapper.selectConfigInfoById(id);
    }


    /**
     * 修改会签配置管理
     *
     * @param signConfigVo 会签配置管理
     * @return 结果
     */
    @Override
    public AjaxResult updateConfigInfo(SignConfigVo signConfigVo)
    {
        try {
            int count = signConfigMapper.selectConfigRepeatEdit(signConfigVo);
            if(count > 0){
                return AjaxResult.error("同时存在相同流程名称和会签类型，请重新选择修改");
            }
            int countTwo =  signConfigMapper.updateConfigInfo(signConfigVo);
            if(countTwo == 1){
                return AjaxResult.success();
            }
            return AjaxResult.error("会签配置修改失败");
        } catch (Exception e) {
            return AjaxResult.error();
        }
    }

    /**
     * 删除会签配置管理信息
     *
     * @param id 主键
     * @return 结果
     */
    @Override
    public AjaxResult delConfig(Long id)
    {
        try {
            int count = signConfigMapper.delConfig(id);
            if(count == 1){
                return AjaxResult.success();
            }
            return AjaxResult.error("会签配置删除失败");
        } catch (Exception e) {
            return AjaxResult.error();
        }
    }
}
