package com.jojubanking.boot.module.system.service.xyrw;

import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.jojubanking.boot.module.system.controller.app.xytjinfo.vo.XyrwListReqVO;
import com.jojubanking.boot.module.system.dal.dataobject.xymain.xyMainDO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;

import java.util.*;
import com.jojubanking.boot.module.system.controller.admin.xyrw.vo.*;
import com.jojubanking.boot.module.system.dal.dataobject.xyrw.XyrwDO;
import com.jojubanking.boot.framework.common.pojo.PageResult;

import com.jojubanking.boot.module.system.convert.xyrw.XyrwConvert;
import com.jojubanking.boot.module.system.dal.mysql.xyrw.XyrwMapper;

import static com.jojubanking.boot.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.jojubanking.boot.module.system.enums.ErrorCodeConstants.*;

/**
 * 批次信息 Service 实现类
 *
 * @author admin
 */
@Service
@Validated
public class XyrwServiceImpl implements XyrwService {

    @Resource
    private XyrwMapper xyrwMapper;

    @Override
    public Long createXyrw(XyrwCreateReqVO createReqVO) {
        // 插入
        XyrwDO xyrw = XyrwConvert.INSTANCE.convert(createReqVO);
        xyrwMapper.insert(xyrw);
        // 返回
        return xyrw.getId();
    }

    @Override
    public void updateXyrw(XyrwUpdateReqVO updateReqVO) {
        // 校验存在
        this.validateXyrwExists(updateReqVO.getId());
        // 更新
        XyrwDO updateObj = XyrwConvert.INSTANCE.convert(updateReqVO);
        xyrwMapper.updateById(updateObj);
    }

    public void updateXyrwByBatch(XyrwUpdateReqVO updateReqVO) {

        UpdateWrapper<XyrwDO> updateWrapper = Wrappers.update();

        updateWrapper.ne("batchno", updateReqVO.getBatchno());
        XyrwDO xyrwDO = new XyrwDO();
        xyrwDO.setBatchStatus(updateReqVO.getBatchStatus());

        int update = xyrwMapper.update(xyrwDO, updateWrapper);

    }


    @Override
    public void deleteXyrw(Long id) {
        // 校验存在
        this.validateXyrwExists(id);
        // 删除
        xyrwMapper.deleteById(id);
    }

    private void validateXyrwExists(Long id) {
        if (xyrwMapper.selectById(id) == null) {
            throw exception(XYRW_NOT_EXISTS);
        }
    }

    @Override
    public XyrwDO getXyrw(Long id) {
        return xyrwMapper.selectById(id);
    }

    @Override
    public List<XyrwDO> getXyrwList(Collection<Long> ids) {
        return xyrwMapper.selectBatchIds(ids);
    }

    @Override
    public PageResult<XyrwDO> getXyrwPage(XyrwPageReqVO pageReqVO) {
        return xyrwMapper.selectPage(pageReqVO);
    }

    @Override
    public List<XyrwDO> getXyrwList(XyrwExportReqVO exportReqVO) {
        return xyrwMapper.selectList(exportReqVO);
    }

    @Override
    public List<XyrwDO> getXyrwSimpleList(XyrwListReqVO listReqVO) {
        return xyrwMapper.selectList(listReqVO);
    }

}
