package market.Api.Mes.service;

import java.util.ArrayList;
import java.util.List;

import market.Api.Mes.impl.Judge_Prc_Info;
import market.Mes.Lengthwise.Plan.vo.PlnMaterielDetail;
import market.Qms.slmord.vo.SlmOrdDesignMscPlSti;

import org.springframework.transaction.annotation.Transactional;

import com.hnshituo.basic.service.BaseService;

public interface MesApiDesignInfoService extends BaseService{

	public List<Judge_Prc_Info> getMatList(String object_no) throws Exception;
	
	public SlmOrdDesignMscPlSti getPrc_Code_Of_Mat(String object_no) throws Exception;
	
	/**
	 * 生产订单是否锁定
	 * 
	 * @param prod_order_no
	 * @return
	 */
	public boolean pOrdIsLocked(String prod_order_no) ;
	
	
	/**
	 * 厂内合同与否
	 * 
	 * @param prod_order_no 生产订单号
	 * @return
	 * @throws Exception
	 */
	public boolean getContractType(String prod_order_no) throws Exception ;
	
	/**
	 * 来料加工合同与否
	 * 
	 * @param prod_order_no 生产订单号
	 * @return
	 * @throws Exception
	 */
	public boolean getCont_Type(String prod_order_no) throws Exception;
	
	
	/**
	 * 物料是否生产完成
	 * 
	 * @param object_no
	 * @return
	 */
	public boolean matIsFinish(String object_no);
	
	
	/**
	 * 物料充当脱单履历
	 * 
	 * @param pmd       虚拟物料信息
	 * @param remark    备注
	 * @param userName  操作人
	 * @param process   工序
	 * @param opt_type  操作类型
	 * @param object_no 物料号
	 */
	public void createMatLog(PlnMaterielDetail pmd, String remark, String userName, String process, String opt_type,
			String object_no) ;
	
	
	/**
	 * 获取有效工序集合
	 * 
	 * @param str
	 * @return
	 */
	public ArrayList<String> getProcessPath(String[] str);
	
	/**
	 * 修改订单进程信息
	 * 
	 * @param prod_order_no
	 * @param order_no
	 * @param path
	 * @param single_wgt
	 * @param flag          true 挂单 false 脱单
	 */
	public void updateOrderStatic(String prod_order_no, String order_no, String path, Double single_wgt, boolean flag);
	
	/**
	 * 脱单清空物料附加信息
	 * 
	 * @param object_no
	 */
	@Transactional(value = "tm", rollbackFor = Exception.class)
	public void updateMaterielExinfo(String object_no) ;
	
	
}
