package cn.estsh.i3plus.ext.mes.pcn.api.busi.jx;

import cn.estsh.i3plus.pojo.mes.bean.MesObjectCfg;
import cn.estsh.i3plus.pojo.mes.bean.MesPlc;
import io.swagger.annotations.ApiOperation;

import java.util.List;

/**
 * @Author: wangjie
 * @CreateDate: 2021/01/18 11:22 上午
 * @Description:
 **/
public interface IJxPlcExtService {

    /**
     * 获取PLC信息
     * @param organizeCode 组织代码
     * @param plcCode PLC代码
     * @return PLC信息
     */
    @ApiOperation(value = "获取PLC信息", notes = "获取PLC信息")
    MesPlc getPlcDb(String organizeCode, String plcCode);

    /**
     * 获取PLC信息
     * @param organizeCode 组织代码
     * @param workCenterCode 生产线代码
     * @param workCellCode 工位代码
     * @return PLC信息
     */
    @ApiOperation(value = "获取PLC信息", notes = "获取PLC信息")
    List<MesPlc> getPlcDbList(String organizeCode, String workCenterCode, String workCellCode);

    /**
     * 读取PLC数据
     * @param plc PLC信息
     * @return PLC数据
     */
    @ApiOperation(value = "读取PLC数据", notes = "读取PLC数据")
    Object doReadOpcParamValue(MesPlc plc);

    /**
     * 写入PLC数据
     * @param plc PLC信息
     * @param value 数据
     * @return 结果
     */
    @ApiOperation(value = "写入PLC数据", notes = "写入PLC数据")
    Boolean doWriteOpcParamValue(MesPlc plc, String value);

    /**
     * 获取PLC信息
     * @param organizeCode 组织代码
     * @param key  key
     * @param plcCode PLC代码
     * @return PLC信息
     */
    @ApiOperation(value = "获取PLC信息", notes = "获取PLC信息")
    MesPlc getPlcData(String organizeCode, String key, String plcCode);

    /**
     * 获取信息
     * @param key  key
     * @param item item
     * @return 信息
     */
    @ApiOperation(value = "获取信息", notes = "获取信息")
    String getCachedData(String key, String item);

    /**
     * 缓存信息
     * @param organizeCode 组织代码
     * @param key  key
     * @param item  item
     * @param data  数据
     */
    @ApiOperation(value = "缓存信息", notes = "缓存信息")
    void doCacheData(String organizeCode, String key, String item, String data);

    /**
     * 获取对象结构信息
     * @param organizeCode 工厂代码
     * @param plcCodeList PLC代码集合
     * @return 对象结构信息
     */
    @ApiOperation(value = "获取对象结构信息", notes = "获取对象结构信息")
    List<MesObjectCfg> getObjectCfgDbList(String organizeCode, List<String> plcCodeList);


}
