package com.ruoyi.clMaterial.service.impl;

import java.util.List;

import com.ruoyi.common.annotation.DataSource;
import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.enums.DataSourceType;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.clMaterial.mapper.CYlMaterialMapper;
import com.ruoyi.clMaterial.domain.CYlMaterial;
import com.ruoyi.clMaterial.service.ICYlMaterialService;

/**
 * 材料管理Service业务层处理
 *
 * @author ruoyi
 * @date 2024-02-28
 */
@Service
public class CYlMaterialServiceImpl implements ICYlMaterialService
{
    @Autowired
    private CYlMaterialMapper cYlMaterialMapper;

    /**
     * 查询材料管理
     *
     * @param materialId 材料管理主键
     * @return 材料管理
     */
    @Override
    public CYlMaterial selectCYlMaterialByMaterialId(Long materialId)
    {
        return cYlMaterialMapper.selectCYlMaterialByMaterialId(materialId);
    }

    /**
     * 查询材料管理列表
     *
     * @param cYlMaterial 材料管理
     * @return 材料管理
     */
    @Override
    public List<CYlMaterial> selectCYlMaterialList(CYlMaterial cYlMaterial)
    {
        return cYlMaterialMapper.selectCYlMaterialList(cYlMaterial);
    }

    /**
     * 新增材料管理
     *
     * @param cYlMaterial 材料管理
     * @return 结果
     */
    @Override
    public int insertCYlMaterial(CYlMaterial cYlMaterial)
    {
        return cYlMaterialMapper.insertCYlMaterial(cYlMaterial);
    }

    /**
     * 修改材料管理
     *
     * @param cYlMaterial 材料管理
     * @return 结果
     */
    @Override
    public int updateCYlMaterial(CYlMaterial cYlMaterial)
    {
        return cYlMaterialMapper.updateCYlMaterial(cYlMaterial);
    }

    /**
     * 批量删除材料管理
     *
     * @param materialIds 需要删除的材料管理主键
     * @return 结果
     */
    @Override
    public int deleteCYlMaterialByMaterialIds(Long[] materialIds)
    {
        return cYlMaterialMapper.deleteCYlMaterialByMaterialIds(materialIds);
    }

    /**
     * 删除材料管理信息
     *
     * @param materialId 材料管理主键
     * @return 结果
     */
    @Override
    public int deleteCYlMaterialByMaterialId(Long materialId)
    {
        return cYlMaterialMapper.deleteCYlMaterialByMaterialId(materialId);
    }

    /**
     * 校验材料编码是否存在
     * @param cYlMaterial
     * @return
     */
    @Override
    public boolean checkMaterialNoUnique(CYlMaterial cYlMaterial) {
        Long materialId = StringUtils.isNull(cYlMaterial.getMaterialId()) ? -1L : cYlMaterial.getMaterialId();
        CYlMaterial info = cYlMaterialMapper.checkMaterialNoUnique(cYlMaterial.getMaterialNo());
        if (StringUtils.isNotNull(info) && info.getMaterialId().longValue() != materialId.longValue())
        {
            return UserConstants.NOT_UNIQUE;
        }
        return UserConstants.UNIQUE;
    }

    /**
     * 拉取报价实时价格数据
     * @return
     */
    @Override
    @DataSource(DataSourceType.JNERP)
    public List<CYlMaterial> getBjData() {

        List<CYlMaterial> list = cYlMaterialMapper.getBjData();
        return list;
    }

    /**
     * 删除c_yl_material_bjdata 表数据
     */
    @Override
    @DataSource(DataSourceType.QUOT)
    public void deleteYlMaterialBjBatch() {
        cYlMaterialMapper.deleteYlMaterialBjBatch();
    }

    /**
     * 报价实时价格数据保存至 c_yl_material_bjdata 表
     * @param list
     */
    @Override
    @DataSource(DataSourceType.QUOT)
    public void insertYlMaterialBjBatch(List<CYlMaterial> list) {
        cYlMaterialMapper.insertYlMaterialBjBatch(list);
    }

    /**
     * 更新 c_yl_material_bjdata 表中单价字段
     */
    @Override
    @DataSource(DataSourceType.QUOT)
    public void updateYlMaterialBjBatch() {
        cYlMaterialMapper.updateYlMaterialBjBatch();
    }
}
