package com.op.mes.service.impl;

import java.util.Date;
import java.util.List;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.op.common.core.utils.DateUtils;
import com.op.common.core.web.domain.AjaxResult;
import com.op.mes.domain.ProOrderWorkorder;
import com.op.mes.mapper.ProOrderWorkorderMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.op.mes.mapper.ProWetMaterialPlanMapper;
import com.op.mes.domain.ProWetMaterialPlan;
import com.op.mes.service.IProWetMaterialPlanService;

import static com.op.common.core.web.domain.AjaxResult.success;

/**
 * 湿料计划管理Service业务层处理
 *
 * @author Open Platform
 * @date 2023-07-24
 */
@Service
public class ProWetMaterialPlanServiceImpl implements IProWetMaterialPlanService {
    @Autowired
    private ProWetMaterialPlanMapper proWetMaterialPlanMapper;
    @Autowired
    private ProOrderWorkorderMapper proOrderWorkorderMapper;

    /**
     * 查询湿料计划管理
     *
     * @param id 湿料计划管理主键
     * @return 湿料计划管理
     */
    @Override
    @DS("#header.poolName")
    public ProWetMaterialPlan selectProWetMaterialPlanById(String id) {
        return proWetMaterialPlanMapper.selectProWetMaterialPlanById(id);
    }

    /**
     * 查询湿料计划管理列表
     *
     * @param proWetMaterialPlan 湿料计划管理
     * @return 湿料计划管理
     */
    @Override
    @DS("#header.poolName")
    public List<ProWetMaterialPlan> selectProWetMaterialPlanList(ProWetMaterialPlan proWetMaterialPlan) {
        if (proWetMaterialPlan.getStartTime() != null && proWetMaterialPlan.getEndTime() != null) {
            return proWetMaterialPlanMapper.selectProWetMaterialPlanListByTime(proWetMaterialPlan.getStartTime(), proWetMaterialPlan.getEndTime());
        }
        return proWetMaterialPlanMapper.selectProWetMaterialPlanList(proWetMaterialPlan);
    }

    /**
     * 新增湿料计划管理
     *
     * @param proWetMaterialPlan 湿料计划管理
     * @return 结果
     */
    @Override
    @DS("#header.poolName")
    public int insertProWetMaterialPlan(ProWetMaterialPlan proWetMaterialPlan) {
        proWetMaterialPlan.setCreateTime(DateUtils.getNowDate());
        return proWetMaterialPlanMapper.insertProWetMaterialPlan(proWetMaterialPlan);
    }

    /**
     * 修改湿料计划管理
     *
     * @param proWetMaterialPlan 湿料计划管理
     * @return 结果
     */
    @Override
    @DS("#header.poolName")
    public int updateProWetMaterialPlan(ProWetMaterialPlan proWetMaterialPlan) {
        proWetMaterialPlan.setUpdateTime(DateUtils.getNowDate());
        return proWetMaterialPlanMapper.updateProWetMaterialPlan(proWetMaterialPlan);
    }

    /**
     * 批量删除湿料计划管理
     *
     * @param ids 需要删除的湿料计划管理主键
     * @return 结果
     */
    @Override
    @DS("#header.poolName")
    public int deleteProWetMaterialPlanByIds(String[] ids) {
        return proWetMaterialPlanMapper.deleteProWetMaterialPlanByIds(ids);
    }

    /**
     * 删除湿料计划管理信息
     *
     * @param id 湿料计划管理主键
     * @return 结果
     */
    @Override
    @DS("#header.poolName")
    public int deleteProWetMaterialPlanById(String id) {
        return proWetMaterialPlanMapper.deleteProWetMaterialPlanById(id);
    }

    /**
     * 通过工单生产日期查询所有子工单
     *
     * @param productDate
     * @return
     */
    @Override
    @DS("#header.poolName")
    public AjaxResult getWorkOrderByTime(Date productDate) {
        List<ProOrderWorkorder> workorderList = proOrderWorkorderMapper.selectWorkOrderByTime(productDate);
        // 循环遍历
        for (int i = 0; i < workorderList.size(); i++){
            // 通过班次id获取班次名称
            workorderList.get(i).setShiftDesc(proWetMaterialPlanMapper.selectShiftById(workorderList.get(i).getShiftId()));
        }
        return success(workorderList);
    }

    /**
     * 查询料罐list
     * @return
     */
    @Override
    @DS("#header.poolName")
    public AjaxResult getBucketList() {
        return success(proWetMaterialPlanMapper.selectBucketList());
    }
}
