package com.billion.main.om.service.impl;

import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.billion.common.exception.ServiceException;
import com.billion.common.utils.DateUtils;
import com.billion.main.om.domain.OmProductionOrderInfo;
import com.billion.main.om.mapper.OmProductionOrderInfoMapper;
import com.billion.main.om.service.IOmProductionOrderInfoService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * 生产工单Service业务层处理
 * 
 * @author Billion
 * @date 2024-11-20
 */
@Service
public class OmProductionOrderInfoServiceImpl extends ServiceImpl<OmProductionOrderInfoMapper, OmProductionOrderInfo> implements IOmProductionOrderInfoService
{
    @Resource
    private OmProductionOrderInfoMapper OmProductionOrderInfoMapper;


    @Override
    public OmProductionOrderInfo getBodyOrder()
    {
        return OmProductionOrderInfoMapper.getBodyOrder();
    }

    @Override
    public OmProductionOrderInfo updateBodyStatus2() {return OmProductionOrderInfoMapper.updateBodyStatus2();}
    @Override
    public OmProductionOrderInfo updateBodyStatus1()
    {
        return OmProductionOrderInfoMapper.updateBodyStatus1();
    }
    @Override
    public OmProductionOrderInfo getHeadOrder()
    {
        return OmProductionOrderInfoMapper.getHeadOrder();
    }

    @Override
    public OmProductionOrderInfo updateHeadStatus2() {return OmProductionOrderInfoMapper.updateHeadStatus2();}
    @Override
    public OmProductionOrderInfo updateHeadStatus1()
    {
        return OmProductionOrderInfoMapper.updateHeadStatus1();
    }
    @Override
    public OmProductionOrderInfo getPreOrder()
    {
        return OmProductionOrderInfoMapper.getPreOrder();
    }

    @Override
    public OmProductionOrderInfo updatePreStatus2() {return OmProductionOrderInfoMapper.updatePreStatus2();}
    @Override
    public OmProductionOrderInfo updatePreStatus1()
    {
        return OmProductionOrderInfoMapper.updatePreStatus1();
    }





    /**
     * 查询生产工单
     * 
     * @param id 生产工单主键
     * @return 生产工单
     */
    @Override
    public OmProductionOrderInfo selectOmProductionOrderInfoById(Long id)
    {
        return OmProductionOrderInfoMapper.selectOmProductionOrderInfoById(id);
    }

    /**
     * 查询生产工单列表
     * 
     * @param OmProductionOrderInfo 生产工单
     * @return 生产工单
     */
    @Override
    public List<OmProductionOrderInfo> selectOmProductionOrderInfoList(OmProductionOrderInfo OmProductionOrderInfo)
    {
        return OmProductionOrderInfoMapper.selectOmProductionOrderInfoList(OmProductionOrderInfo);
    }

    /**
     * 新增生产工单
     * 
     * @param omProductionOrderInfo 生产工单
     */
    @Override
    public void insertOmProductionOrderInfo(OmProductionOrderInfo omProductionOrderInfo)
    {
        List<OmProductionOrderInfo> checkList = this.list(new LambdaQueryWrapper<OmProductionOrderInfo>().eq(OmProductionOrderInfo::getWorkOrderNo, omProductionOrderInfo.getWorkOrderNo()));
        if (CollUtil.isNotEmpty(checkList)){
            throw new ServiceException("已存在工单编号为"+omProductionOrderInfo.getWorkOrderNo()+"的数据");
        }
        this.save(omProductionOrderInfo);

//        LoginUser loginUser = SecurityUtils.getLoginUser();
//        SysUser user = loginUser.getUser();
//        OmProductionOrderInfo.setCreateTime(new Date());
//        OmProductionOrderInfo.setUpdateTime(new Date());
//        OmProductionOrderInfo.setCreateBy(user.getUserName());
//        OmProductionOrderInfo.setUpdateBy(user.getUserName());
//        OmProductionOrderInfo.setOrderStatus(Constant.ORDER_STATUS_NOT_START);
//        return OmProductionOrderInfoMapper.insertOmProductionOrderInfo(OmProductionOrderInfo);
    }

    /**
     * 修改生产工单
     * 
     * @param omProductionOrderInfo 生产工单
     * @return 结果
     */
    @Override
    public int updateOmProductionOrderInfo(OmProductionOrderInfo omProductionOrderInfo)
    {
//        Collection<Long> omProductionOrderInfoIds = Collections.emptyList();
//        List<OmProductionOrderInfo> checkList = this.list(new LambdaQueryWrapper<OmProductionOrderInfo>()
//                .eq(OmProductionOrderInfo::getWorkOrderNo, omProductionOrderInfo.getWorkOrderNo())
//                        .notIn(OmProductionOrderInfo::getId, omProductionOrderInfoIds));
//        if (CollUtil.isNotEmpty(checkList)){
//            throw new ServiceException("已存在工单编号为"+omProductionOrderInfo.getWorkOrderNo()+"的数据");
//        }
//        return OmProductionOrderInfoMapper.updateOmProductionOrderInfo(omProductionOrderInfo);
        omProductionOrderInfo.setUpdateTime(DateUtils.getNowDate());
        return  OmProductionOrderInfoMapper.updateOmProductionOrderInfo(omProductionOrderInfo);
    }

    /**
     * 批量删除生产工单
     * 
     * @param ids 需要删除的生产工单主键
     * @return 结果
     */
    @Override
    public int deleteOmProductionOrderInfoByIds(Long[] ids)
    {
        return OmProductionOrderInfoMapper.deleteOmProductionOrderInfoByIds(ids);
    }

    /**
     * 删除生产工单信息
     * 
     * @param id 生产工单主键
     * @return 结果
     */
    @Override
    public int deleteOmProductionOrderInfoById(Long id)
    {
        return OmProductionOrderInfoMapper.deleteOmProductionOrderInfoById(id);
    }

    @Override
    public void insertBatch(List<OmProductionOrderInfo> confList) {

    }
}