package com.xisc.pm.app.service.strategy.secondarydesign;

import java.util.List;

import org.springframework.beans.factory.InitializingBean;

import com.xisc.pm.app.service.strategy.secondarydesign.DefaultSecondaryDesignStrategy.OpType;
import com.xisc.pm.domain.entity.PmCmdLargePlt;

/**
 * 
 * @author jun.zeng
 *
 */
public interface SecondaryDesignStrategy extends InitializingBean {
    
    /**
     * 试样添加
     * @param tenantId
     * @param pmCmdLargePltList
     */
    void sampleAddition(Long tenantId, List<PmCmdLargePlt> pmCmdLargePltList);
    
    /**
     * 试样添加回滚
     * @param tenantId
     * @param pmCmdLargePltList
     */
    void sampleAdditionRollBack(Long tenantId, List<String> tmpSlapNoList);
    
    /**
     * 二次设计
     * @param tenantId
     * @param pmCmdLargePltList
     */
    void secondaryDesign(Long tenantId, List<PmCmdLargePlt> pmCmdLargePltList);
    
    /**
     * 二次设计回退
     * @param tenantId
     * @param pmCmdLargePltList
     */
    void secondaryDesignRollback(Long tenantId, List<PmCmdLargePlt> pmCmdLargePltList) ;
    
    /**
     * 命令作成
     * @param tenantId
     * @param pmCmdLargePltList
     */
    void commandCreate(Long tenantId, List<PmCmdLargePlt> pmCmdLargePltList);
    
    /**
     * 试样添加二次设计命令作成状态变化方法
     * @param currentStatus  当前状态
     * @return 目标状态
     */
    String pdStatusHpChangeResult(String currentStatus , OpType opType , String tmpSlabNo);

}
