using APT.BaseData.Domain.ApiModel;
using APT.BaseData.Domain.Entities;
using APT.BaseData.Domain.Enums;
using APT.Infrastructure.Core;
using System;
using System.Collections.Generic;
using APT.Infrastructure.Api;
namespace APT.BaseData.Domain.IServices
{
	public interface IPFFormService : ICommonService
	{
		/// 
		/// 获取实体语法
		/// 
		/// 
		/// 
		/// 
		/// 
		/// 获取语法类型 0-update 和insert  1-仅获取update 2-仅获取insert
		void GetSqlByObject(DataBaseType dataBaseType, object obj, List list, string dstOrgId, int sqlType);
		/// 
		/// 创建表单设置版本信息
		/// 
		/// 当前设置类型
		/// ID列表 逗号隔开
		void CreateFormConfigVersion(PFFormConfigVersionEnum configEnum,  string ids);
		/// 
		/// 依据表单编号获取更新表单配置语法
		/// 
		/// 
		/// 
		/// 
		/// 
		/// 
		/// 
		/// 开始时间  从此时间之后的有异动的配置信息都会获取到
		/// 是否组织初始化
		/// 
		List GetSqlsByFormCode(Guid orgId, List formCodes, string dstOrgId, decimal dstFormConfigVersion, DataBaseType dstDataBaseType, int sqlType, DateTime? startTime, bool isInitOrg);
		/// 
		/// 依据表单ID获取更新表单配置语法
		/// 
		/// 
		/// 
		/// 
		/// 
		/// 
		///  获取语法类型 0-update 和insert  1-仅获取update 2-仅获取insert
		/// 开始时间  从此时间之后的有异动的配置信息都会获取到
		/// 是否组织初始化
		/// 
		List GetSqlsByFormId(Guid orgId, List formIds, string dstOrgId, decimal dstFormConfigVersion, DataBaseType dstDataBaseType, int sqlType, DateTime? startTime, bool isInitOrg, int formType);
		/// 
		/// 获取实体表语法
		/// 
		/// 
		/// 
		/// 
		/// 
		///  获取语法类型 0-update 和insert  1-仅获取update 2-仅获取insert
		/// 
		List GetSqlByEntity(DataBaseType dataBaseType, Guid orgId, string entityNames, string dstOrgId, int sqlType);
		/// 
		///根据来源组织初始化目的组织 配置数据
		/// 
		/// 来源组织编号
		/// 目的组织编号
		/// 目的组织名称
		void InitOrgBySrcOrg(string srcOrgCode, string destOrgCode, string destOrgName);
		/// 
		/// 初始化组织
		/// 
		/// 
		/// 
		/// 
		void InitOrgByOrg(Guid srcOrgId, List destOrgIds, DateTime? startTime);
		/// 
		/// 同步表单配置信息
		/// 
		/// 
		/// 
		/// 
		void SynchFormConfigByOrg(Guid srcOrgId, List destOrgIds, DateTime? startTime);
		/// 
		/// 执行语法并且获取执行结果
		/// 
		/// 
		/// 
		ExecuteSqlResult ExcuteSqlAndGetResult(string sql);
        /// 
        /// 根据表名获取模块类型
        /// 
        /// 
        /// 
        PFModuleTypeEnum GetModelTypeByName(string tableName);
        /// 
        /// 获取表单配置版本
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        void AddFormConfigVersion(List formIds, List pageTables,
       List columns, List pageTablePanels,
        Dictionary> otherCookies);
	}
}