package com.malk.aiwei.service;

import com.malk.server.aliwork.YDParam;

import java.util.List;
import java.util.Map;

public interface AWClint {

    /**
     * 交付物审批
     */
    void doApprove(Map data);

    /**
     * 交付物审批回调
     */
    void approved(Map data);

    /**
     * 检查项check
     */
    Map doCheck(String taskId, boolean isTask);

    /**
     * 检查项回调
     */
    void checked(Map data);

    /**
     * 同步项目主数据
     */
    Map syncProject(String projectCode);

    /**
     * 通过模板创建项目 [templateId 为空, 触发项目类型匹配]
     */
    void createProject(String projectCode, String templateId);

    /**
     * 项目主数据增量更新
     */
    void updateProject(String projectCode);

    /**
     * 分配项目角色 prd 若是一人直接指定, 多人情况下忽略
     */
    void updateProjectRole(String projectId, List<String> trNode);

    /**
     * 项目迁移: 删除依赖项
     */
    void removeDependencies(String projectId, List<String> trNode);

    /**
     * 增量同步crm基线
     */
    void syncBaseLineForCRM(String projectId);

    /**
     * 全量同步crm基线
     */
    void syncBaseLineForCRM();

    /**
     * 修改任务自定义字段内容
     *
     * @param projectId 1. 若为空, 触发全量修改; 2. 仅修改非未完成任务
     */
    void batchUpdate(String fieldName, String preName, String modifyName, String projectId);

    /**
     * 同步预检项 [实现]
     *
     * @param srcParam          [appType, formUuid, systemToken]
     * @param compIds           映射表: 当前组件, 来源组件
     * @param taskCompId        任务号, 忽略为空记录
     * @param codeCompId        来源表唯一标识
     * @param checkType         预检项分类（TR评审要素表、经验库、技术评审要素表）
     * @param associationCompId 预检项分类对应关联组件
     */
    void syncCheckList(YDParam srcParam, Map<String, ?> compIds, String taskCompId, String codeCompId, String checkType, String associationCompId);

    /**
     * 同步预检项 [通用]
     *
     * @param type 预检项分类（0-经验库、1-技术评审要素表, 2-TR评审要素表）
     */
    void syncCheckList(int type);

    /**
     * 提供verifier数据读取服务
     */
    List<Map> syncVerifier(String projectCode);

    void test();
}
