package cygx

import (
	"github.com/beego/beego/v2/client/orm"
	//"time"
)

type CygxReportMapping struct {
	SubCategoryName string `description:"主题"`
}

type CygxReportMappingListRep struct {
	List []*CygxReportMapping
}

// 主题列表
func CygxReportMappingist(chartPermissionId int) (items []*CygxReportMapping, err error) {
	o := orm.NewOrmUsingDB("hz_cygx")
	sql := `SELECT sub_category_name FROM cygx_report_mapping WHERE  chart_permission_id = ? GROUP BY sub_category_name   ORDER BY sort DESC , id  ASC  `
	_, err = o.Raw(sql, chartPermissionId).QueryRows(&items)
	return
}

type CygxReportMappingMatchType struct {
	MatchTypeName string `description:"匹配类型"`
}

type CygxReportMappingMatchTypeRep struct {
	List []*CygxReportMappingMatchType
}

// 主题列表
func CygxReportMappingMatchTypeList() (items []*CygxReportMappingMatchType, err error) {
	o := orm.NewOrmUsingDB("hz_cygx")
	sql := `SELECT match_type_name FROM cygx_report_mapping WHERE report_type = 2  GROUP BY match_type_name`
	_, err = o.Raw(sql).QueryRows(&items)
	return
}

// 主题列表所有
func CygxReportMappingMatchTypeListAll() (items []*CygxReportMappingMatchType, err error) {
	o := orm.NewOrmUsingDB("hz_cygx")
	sql := `SELECT match_type_name FROM cygx_report_mapping WHERE match_type_name  != ''  GROUP BY match_type_name`
	_, err = o.Raw(sql).QueryRows(&items)
	return
}

// 主题列表
func CygxReportMappingMatchTypeListExcel() (items []*CygxReportMappingMatchType, err error) {
	o := orm.NewOrmUsingDB("hz_cygx")
	sql := `SELECT match_type_name FROM cygx_report_mapping WHERE report_type = 2 AND chart_permission_id != 23 GROUP BY match_type_name`
	_, err = o.Raw(sql).QueryRows(&items)
	return
}

// 获取产业关联的文章数量
func GetReportCount(chartPermissionId, industrialManagementId int, matchTypeName string) (recount int, err error) {
	sqlCount := `SELECT COUNT(1) as recount FROM
	cygx_industrial_article_group_management AS man_g
	INNER JOIN  cygx_article as art on art.article_id = man_g.article_id
	INNER JOIN cygx_report_mapping as re ON re.category_id = art.category_id
	WHERE re.chart_permission_id = ? 
    AND man_g.industrial_management_id = ?
	AND re.match_type_name = ` + "'" + matchTypeName + "'"
	o := orm.NewOrmUsingDB("hz_cygx")
	err = o.Raw(sqlCount, chartPermissionId, industrialManagementId).QueryRow(&recount)
	return
}

type ReportMappingRep struct {
	MatchTypeName string `description:"匹配类型"`
	ReportType    int    `description:"报告类型,2产业报告,1行业报告"`
	IsSummary     int    `description:"是否是纪要库,1是,0否"`
	IsReport      int    `description:"是否是报告,1是,0否"`
	CategoryId    int    `description:"分类ID"`
}

func GetMatchTypeNameById(Id int) (item *ReportMappingRep, err error) {
	o := orm.NewOrmUsingDB("hz_cygx")
	sql := `SELECT * FROM cygx_report_mapping WHERE id = ? `
	err = o.Raw(sql, Id).QueryRow(&item)
	return
}

func GetMatchTypeNameByPermissionId(permissionId int) (item *ReportMappingRep, err error) {
	o := orm.NewOrmUsingDB("hz_cygx")
	sql := `SELECT category_id FROM cygx_report_mapping WHERE chart_permission_id = ? AND category_id IN (1004,1005,1006,1007) AND report_type = 2 LIMIT 1 `
	err = o.Raw(sql, permissionId).QueryRow(&item)
	return
}

func GetMatchTypeNameByKeyword(keyWord string) (items []*CygxReportMapping, err error) {
	o := orm.NewOrmUsingDB("hz_cygx")
	sql := `SELECT
			* 
		FROM
			(
			SELECT
				match_type_name AS sub_category_name 
			FROM
				cygx_report_mapping_cygx UNION
			SELECT
				"晨会精华" AS sub_category_name UNION
			SELECT
				"路演精华" AS sub_category_name UNION
			SELECT
				"重点公司" AS sub_category_name UNION
			SELECT
				"本周研究汇总" AS sub_category_name UNION
			SELECT
				"上周纪要汇总" AS sub_category_name UNION
			SELECT
				article_type_name AS sub_category_name 
			FROM
			cygx_article_type 
			) AS a
		WHERE a.sub_category_name LIKE '%` + keyWord + `%' `
	_, err = o.Raw(sql).QueryRows(&items)
	return
}