/***文档注释***********************************************
 * 作者               :                   易鑫
 * 创建日期      :                   2017.11.22
 * 描述               :        			岗位交班记录
 * 注意事项      :                   无
 * 遗留BUG :                   无
 * 修改日期      :                   
 * 修改人员      :                   
 * 修改内容      :                   
***********************************************************/
package market.Mes.Lengthwise.Performance.impl;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import market.Com.vo.CommonPage;
import market.Com.vo.ResultModel;
import market.Mes.Lengthwise.Performance.mapper.MesTurnShiftMapper;
import market.Mes.Lengthwise.Performance.service.MesTurnShiftService;
import market.Mes.Lengthwise.Performance.vo.MesTurnShift;

import org.springframework.transaction.annotation.Transactional;

import com.hnshituo.basic.service.impl.BaseServiceImpl;
import com.hnshituo.basic.spring.remoting.annotation.RemoteService;
import com.hnshituo.core.auth.service.HomeService;

@RemoteService(path="MesTurnShiftService")
public class MesTurnShiftServiceImpl extends BaseServiceImpl<MesTurnShift,Object> implements MesTurnShiftService {
	/**
	 * 交班
	 * @throws Exception 
	 * */
	@Transactional(value="tm", rollbackFor=Exception.class)
	public ResultModel doHandoverClassWeb(CommonPage<MesTurnShift> oci) throws Exception{
		ResultModel rm=new ResultModel();
		
		String w1="",w2="",w3="";
		
		
		//获取系统当前时间取时分秒
		SimpleDateFormat formatYmd = new SimpleDateFormat("yyyy-MM-dd");
		SimpleDateFormat formatHms = new SimpleDateFormat("HH:mm:ss");
		Date date = new Date();
		String ymd=formatYmd.format(date); 
		Date hms=formatHms.parse(formatHms.format(date));
		String dCurr=ymd;//工作日期
		//晚班
		Date dtDyQ = formatHms.parse("23:30:00");//将字符串转换为date类型  
        Date dtDyH = formatHms.parse("00:30:00");  
        
   	 	//早班
        Date dtBQ = formatHms.parse("07:30:00");//将字符串转换为date类型  
        Date dtBH = formatHms.parse("08:30:00");
        //小夜班
        Date dtXyQ = formatHms.parse("15:30:00");//将字符串转换为date类型  
        Date dtXyH = formatHms.parse("16:30:00");
       
        
        //获取当前分条机台C1的未交班数据
		MesTurnShift mts=new MesTurnShift();
		mts.setMachine_code(oci.getObject().getMachine_code());
		mts.setTurn_off("0");//未交班
		
        
        if(hms.getTime()>dtDyQ.getTime()&&hms.getTime()<dtDyH.getTime()){
        	if(hms.getTime()>formatHms.parse("00:00:00").getTime()){
        		Calendar c = Calendar.getInstance();  
    	        c.setTime(date);  
    	        c.add(Calendar.DAY_OF_MONTH, -1);// 今天-1天得到实际工作日期
    	        dCurr=formatYmd.format(c.getTime()); 
        	}
        	w1 = this.getMapper(MesTurnShiftMapper.class).doQueryMesGetShift(ymd+" 00:00:00");
            w2 = this.getMapper(MesTurnShiftMapper.class).doQueryMesGetShift(ymd+" 23:30:00");
	        w3 = this.getMapper(MesTurnShiftMapper.class).doQueryMesGetShift(ymd+" 00:30:00");
	    }else if(hms.getTime()>dtBQ.getTime()&&hms.getTime()<dtBH.getTime()){
	    	w1 = this.getMapper(MesTurnShiftMapper.class).doQueryMesGetShift(ymd+" 08:00:00");
	    	w2 = this.getMapper(MesTurnShiftMapper.class).doQueryMesGetShift(ymd+" 07:30:00");
	        w3 = this.getMapper(MesTurnShiftMapper.class).doQueryMesGetShift(ymd+" 08:30:00");
	    }else if(hms.getTime()>dtXyQ.getTime()&&hms.getTime()<dtXyH.getTime()){
	    	w1 = this.getMapper(MesTurnShiftMapper.class).doQueryMesGetShift(ymd+" 16:00:00");
	    	w2 = this.getMapper(MesTurnShiftMapper.class).doQueryMesGetShift(ymd+" 15:30:00");
	        w3 = this.getMapper(MesTurnShiftMapper.class).doQueryMesGetShift(ymd+" 16:30:00");
	    }else{
        	rm.setState("500");
        	rm.setMsgInfo("当前时间不能进行交接班");
        	return rm;
        }
        
        //交班的人作业时间
        mts.setWrk_date(dCurr);
        //根据日期、机台查询，表里面没有未交班的数据
        List<MesTurnShift> lmt=this.getMapper(MesTurnShiftMapper.class).find(mts, 0, 0);
		boolean w1Flag=false;
		if(lmt!=null&&lmt.size()>0){
			w1Flag=true;
		}
        
        String userName = (String) this.getSession().getAttribute(HomeService.SESSION_USER_NAME);
        if(userName==null){
			userName="";
		}
		if(!w1Flag){//根据日期、机台查询，表里面没有未交班的数据
			//生成一条已接班待交班数据
			MesTurnShift mi=new MesTurnShift();
			mi.setMachine_code(oci.getObject().getMachine_code());
			mi.setWrk_date(dCurr);
			mi.setWrk_ord(w1.substring(0,1));
			mi.setWrk_grp(w1.substring(1,2));
			mi.setTurn_off("0");
			mi.setCarry_on("1");
			mi.setCarry_on_opr(userName);
			this.getMapper(MesTurnShiftMapper.class).doInsert(mi);
		}else{//存在未交班数据
			//则判断当前班次是否在存在当前交班的情况，若存在则不允许交班
			mts.setWrk_ord(w1.substring(0,1));
			mts.setWrk_grp(w1.substring(1,2));
			mts.setTurn_off("1");//已交班
			//该班次班组存在已交班的数据
			int icount=this.getMapper(MesTurnShiftMapper.class).count(mts);
			if(icount!=0){
				rm.setState("500");
				rm.setMsgInfo("该班次已进行交班，无法继续进行交班");
				return rm;
			}else{
				//若不存在则修改未交班数据为交班并生成一条未交班数据
				//修改未交班的为已交班，交班人为该人，且接班人也为该信息
				
				//生成一条已接班待交班数据
				MesTurnShift mi=new MesTurnShift();
				mi.setMachine_code(oci.getObject().getMachine_code());
				mi.setWrk_date(dCurr);
				mi.setWrk_ord(w1.substring(0,1));
				mi.setWrk_grp(w1.substring(1,2));
				mi.setTurn_off("0");
				mi.setCarry_on("1");
				mi.setCarry_on_opr(userName);
				this.getMapper(MesTurnShiftMapper.class).doInsert(mi);
			}
			
		}
			
		
		
		
		rm.setState("200");
		return rm;
	}
}
