package com.op.wms.service.impl;

import java.util.ArrayList;
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.security.utils.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.op.wms.mapper.BaseShiftsTMapper;
import com.op.wms.domain.BaseShiftsT;
import com.op.wms.service.IBaseShiftsTService;

/**
 * 班次管理Service业务层处理
 * 
 * @author Open Platform
 * @date 2023-07-06
 */
@Service
public class BaseShiftsTServiceImpl implements IBaseShiftsTService {
	@Autowired
	private BaseShiftsTMapper baseShiftsTMapper;

	/**
	 * 查询班次管理
	 * 
	 * @param shiftId 班次管理主键
	 * @return 班次管理
	 */
	@Override
	@DS("#header.poolName")
	public BaseShiftsT selectBaseShiftsTByShiftId(String shiftId) {
		return baseShiftsTMapper.selectBaseShiftsTByShiftId(shiftId);
	}

	/**
	 * 查询班次管理列表
	 * 
	 * @param baseShiftsT 班次管理
	 * @return 班次管理
	 */
	@Override
	@DS("#header.poolName")
	public List<BaseShiftsT> selectBaseShiftsTList(BaseShiftsT baseShiftsT) {
		return baseShiftsTMapper.selectBaseShiftsTList(baseShiftsT);
	}

	/**
	 * 新增班次管理
	 * 
	 * @param baseShiftsT 班次管理
	 * @return 结果
	 */
	@Override
	@DS("#header.poolName")
	public int insertBaseShiftsT(BaseShiftsT baseShiftsT) {
		baseShiftsT.setCreateDate(DateUtils.getNowDate());
		baseShiftsT.setCreateBy(SecurityUtils.getUsername());
//		Integer result = 1;
//		Integer result1 = 1;
//		Integer result2 = 1;
//		baseShiftsT.setCreateDate(DateUtils.getNowDate());
//		baseShiftsT.setCreateBy(SecurityUtils.getUsername());
//		//和数据库内所有时间进行比较
//		List<Date> startTimeList = new ArrayList<>();
//		Integer startTimeNum = startTimeList.size();
//		List<Date> endTimeList = new ArrayList<>();
//		Integer endTimeNum = endTimeList.size();
//		startTimeList = baseShiftsTMapper.queryAllStartTime(baseShiftsT);
//		endTimeList = baseShiftsTMapper.queryAllEndTime(baseShiftsT);
//		for(Date str : endTimeList) {//其内部实质上还是调用了迭代器遍历方式，这种循环方式还有其他限制，不建议使用。
//			Date shiftStartTime = baseShiftsT.getShiftStartTime();
//			if(str.after(shiftStartTime)){
//				System.out.println("和结束时间比较成功");
//				endTimeNum = endTimeNum - 1;
//				if(endTimeNum == 0){
//					result1 = 1;
//				}
//			}else{
//				result1 = 0;
//			}
//		}
//		for(Date str : startTimeList) {//其内部实质上还是调用了迭代器遍历方式，这种循环方式还有其他限制，不建议使用。
//			Date shiftEndTime = baseShiftsT.getShiftEndTime();
//			if(str.before(shiftEndTime)){
//				System.out.println("和结束时间比较成功");
//				startTimeNum = startTimeNum - 1;
//				if(startTimeNum == 0){
//					result2 = 1;
//				}
//			}else{
//				result2 = 0;
//			}
//		}
//		if(result1 ==1 && result2 ==1){
//			baseShiftsTMapper.insertBaseShiftsT(baseShiftsT);
//			result = 1;
//		}else {
//			result = 0;
//		}
//		return result;
		return baseShiftsTMapper.insertBaseShiftsT(baseShiftsT);
	}

	/*
	 * 修改班次管理
	 * 
	 * @param baseShiftsT 班次管理
	 * @return 结果
	 */
	@Override
	@DS("#header.poolName")
	public int updateBaseShiftsT(BaseShiftsT baseShiftsT) {
		baseShiftsT.setLastUpdateDate(DateUtils.getNowDate());
		baseShiftsT.setLastUpdateBy(SecurityUtils.getUsername());
		return baseShiftsTMapper.updateBaseShiftsT(baseShiftsT);
	}

	/**
	 * 批量删除班次管理
	 * 
	 * @param shiftIds 需要删除的班次管理主键
	 * @return 结果
	 */
	@Override
	@DS("#header.poolName")
	public int deleteBaseShiftsTByShiftIds(String[] shiftIds) {
		return baseShiftsTMapper.deleteBaseShiftsTByShiftIds(shiftIds);
	}

	/**
	 * 删除班次管理信息
	 * 
	 * @param shiftId 班次管理主键
	 * @return 结果
	 */
	@Override
	@DS("#header.poolName")
	public int deleteBaseShiftsTByShiftId(String shiftId) {
		return baseShiftsTMapper.deleteBaseShiftsTByShiftId(shiftId);
	}
}
