package util

import (
	"encoding/json"
	"fmt"
	"regexp"
	"testing"
)

func TestChargeDetailResult(t *testing.T) {
	detail := `
 一、项目基本情况
项目编号：QSZBCG2023-063
项目名称：潜山市特困人员住院护理险（服务）采购项目
资金来源：财政
预算金额：1800000.00元/年
最高限价：1800000.00元/年
采购需求：详见附件“服务需求与技术要求”
标段（包别）划分：一个包
评标办法：综合评分      
合同履行期限：贰年（自2023年1月1日至2024年12月31日）（服务期满，经潜山市民政局和中标方协商一致后，可续签一年）
 
本项目不接受联合体投标。
二、申请人的资格要求：
1.满足《中华人民共和国政府采购法》第二十二条规定；
2.落实政府采购政策需满足的资格要求：/
3.本项目的特定资格要求：
①供应商存在以下不良信用记录情形之一的，不得推荐为成交候选供应商，不得确定为成交供应商：
a、供应商（包括供应商分公司或非法人性质分支机构等）或其法定代表人被人民法院列入失信被执行人的(核查网址：http：//zxgk.court.gov.cn/)；
b、供应商（包括供应商分公司或非法人性质分支机构等）被税务部门列入重大税收违法案件当事人名单的（核查网址：http：//www.chinatax.gov.cn）；
c、供应商（包括供应商分公司或非法人性质分支机构等）被政府采购监管部门列入政府采购严重违法失信行为记录名单的（信用中国、中国政府采购网 核查网址：http：//www.creditchina.gov.cn/、http：//www.ccgp.gov.cn/）；
②供应商（包括供应商分公司或非法人性质分支机构等）经营异常名录核查（核查网址：http：//www.gsxt.gov.cn/index.html）（已被公示移出的除外）：
a、供应商（不包括供应商分公司或非法人性质分支机构等）被登记机关列入经营异常名录或严重违法失信企业名单（黑名单）信息的（已被公示移出的除外），不得推荐为成交候选供应商，不得确定为成交供应商；
b、若供应商的分公司或非法人性质分支机构被登记机关列入经营异常名录的（已被公示移出的除外）不作为否决条件，但是将会在招标文件评标办法中予以考量[以投标截止时间为查询截止日。如供应商分公司或非法人性质分支机构有一条经营异常名录的，扣0.1分；如供应商分公司或非法人性质分支机构有一条严重违法失信企业名单（黑名单）信息的，扣0.2分；本项最高扣2分，若供应商分公司或非法人性质分支机构已办理注销的不予扣分]，具体见招标文件。
③供应商不良行为记录查询（核查网址：http：//aqggzy.anqing.gov.cn/）：
供应商被安庆市（含五县、桐城市、潜山市）公共资源交易监督管理部门记不良行为记录的，不作为否决条件，但是将会在招标文件评标办法中予以考量[a、自2018年7月1日起至投标截止日（含)，未被安庆市（含五县、桐城市、潜山市）公共资源交易监督管理部门记不良行为记录的，得2分；b、自2018年7月1日起至投标截止日（含)，被安庆市（含五县、桐城市、潜山市）公共资源交易监督管理部门记不良行为记录，但投标截止日不在公示有效期内(公示有效期即限制行为开始时间至限制行为结束时间)的得1分�rc、自2018年7月1日起至投标截止日（含)，被安庆市（含五县、桐城市、潜山市）公共资源交易监督管理部门记不良行为记录且投标截止日在公示有效期内(公示有效期即限制行为开始时间至限制行为结束时间)的得0分；d、2018年7月1日起至投标截止日(含），累计被安庆市(含五县、桐城市、潜山市）公共资源交易监督管理部门记2次及以上不良行为记录的得0分。] 具体见招标文件。
4.具有合法有效的营业执照。
三、获取招标文件
时间：2023年 03 月 08 日至2023年 03 月 20 日， 每天上午8：00至12：00，下午14：30至17：30（北京时间，法定节假日除外）
地点：安庆市公共资源交易中心平台（aqggzy.anqing.gov.cn）
方式：（1）投标人须登录安庆市公共资源交易中心平台查询、获取招标文件。首次登录须在安徽省公共资源交易市场主体库（http：//61.190.70.20/ahggfwpt-zhutiku/dengludenglu）办理入库手续，办理入库不收取任何费用。安徽省公共资源交易市场主体库使用相关问题（如系统登录、信息登记、录入及提交、数字证书关联等）请拨打服务电话：010-86483801 转 5-2（工作日）。  
CA 数字证书有关问题请拨打服务电话：安徽 CA 客服400-880-4959（工作日）。
市场主体招标环节和投标环节系统使用服务电话：400-998-0000（8：00-21：00）。
（2）投标人登录安庆市公共资源交易中心平台获取招标文件及其它资料（含澄清和补充说明等）。如在招标文件获取过程中遇到系统问题，请拨打技术支持服务热线400-9980000，QQ：4008503300。
售价：免费。
四、提交投标文件截止时间、开标时间和地点
2023年 03 月 29 日 09 点30分（北京时间）
地点：安庆市公共资源交易平台     
开评标方式：全流程电子化交易，在线开标
五、公告期限
自本公告发布之日起5个工作日。
六、其他补充事宜
1.投标申请人的联系人电话(手机)、电子邮箱等通讯方式在招投标过程中必须保持畅通，否则因上述原因造成的后果，责任自负。
2.本项目采用电子招投标方式，请投标人在“安庆市公共资源交易服务网”下载专区下载“电子招投标系统平台操作手册”、在“安庆市公共资源交易中心网员系统”―登录页面―工具下载中下载电子投标文件制作工具等相关资料，仔细阅读招标文件要求和相关操作手册。
3.供应商应合理安排招标文件获取时间。如果因计算机及网络故障等无法获取采购文件，责任自负。
4.本项目开评标实行全流程电子化，开标活动在线完成。开标时投标人不得到达开标现场，不接受现场解密，实行远程解密和在线询标。各投标人认真学习《安庆新系统投标单位操作手册v1.0》，务必掌握远程解密方法和在线回复询标方法。
七、对本次招标提出询问，请按以下方式联系。
1.采购人信息
名    称：潜山市民政局　　　
地    址：　安庆市潜山市梅城镇梅苑路282号　　　
联 系 人：　黄先生　　　　
联系方式：　0556-8958945　　　
2.采购代理机构信息
名    称：　安徽妙轩工程咨询有限公司　　　　　
地    址：　安徽省潜山市开发区华瑞路128号　
联 系 人：　　　汪先生　　　　　　　　
联系方式：　　18255604225　　　　　　
3.项目联系方式
项目联系人：黄先生
电　话：　　0556-8958945　　
1. 为贯彻落实中央、省、市“扫黑除恶”专项斗争有关文件和会议精神，净化我市公共资源交易环境，对在交易过程中如发现有涉嫌围标、串标、恶意竞标的违法违规人员，依据相关规定，将线索移送市扫黑办。
2. 根据疫情防控要求，本项目供应商通过远程在线解密投标文件，不得到达招标文件中规定的开标现场参与开标活动。
3. 评审中，评标委员会发现供应商的投标文件中对同类问题表述不一致、前后矛盾、有明显文字和计算错误的内容、有可能不符合招标文件规定等情况需要澄清时，评标委员会应当通过网上系统对供应商进行询标，要求供应商进行必要的澄清、说明或补正。
4. 投标文件制作工具中投标文件格式与本招标文件“第六章投标文件格式”不一致时，以本招标文件“第六章投标文件格式”为准，招标文件另有规定的除外。`

	detail2 := `
    "detail" : "<table border=\"1\">\t<tbody>\t\t<tr>\t\t\t<td>\t\t\t采购内容<br/>\t\t\t</td>\t\t\t<td colspan=\"3\">\t\t\t 胶片掩模版<br/>\t\t\t</td>\t\t</tr>\t\t<tr>\t\t\t<td>\t\t\t采购人所属单位<br/>\t\t\t</td>\t\t\t<td colspan=\"3\">\t\t\t 生物医学工程学院<br/>\t\t\t</td>\t\t</tr>\t\t<tr>\t\t\t<td>\t\t\t项目负责人<br/>\t\t\t</td>\t\t\t<td colspan=\"3\">\t\t\t 王芳<br/>\t\t\t</td>\t\t</tr><tr>\t\t\t<td>\t\t\t项目(课题)名称<br/>\t\t\t</td>\t\t\t<td colspan=\"3\">\t\t\t 基于差分比色的微量物质浓度监测芯片研究<br/>\t\t\t</td>\t\t</tr>\t\t<tr>\t\t\t<td>\t\t\t项目经费代码<br/>\t\t\t</td>\t\t\t<td colspan=\"3\">\t\t\t CZQ23031<br/>\t\t\t</td>\t\t</tr>\t\t<tr>\t\t\t<td>\t\t\t成交供应商<br/>\t\t\t</td>\t\t\t<td colspan=\"3\">\t\t\t 深圳菩提创新科技有限公司<br/>\t\t\t</td>\t\t</tr>\t\t<tr>\t\t\t<td>\t\t\t成交金额(元)<br/>\t\t\t</td>\t\t\t<td colspan=\"3\">\t\t\t 300.00<br/>\t\t\t</td>\t\t</tr>\t\t<tr>\t\t\t<td>\t\t\t主要成交内容（主产品品牌、型号、数量）<br/>\t\t\t</td>\t\t\t<td colspan=\"3\">\t\t\t胶片掩模版3个<br/>\t\t\t</td>\t\t</tr>\t</tbody></table><br/> <br/> <br/> <br/>                                         中南民族大学采购与招投标工作领导小组办公室<br/>2023年09月19日",

`
	res := ChargeDetailResult(detail)
	fmt.Println("TestChargeDetailResult =>", res)

	res2 := ChargeDetailResult(detail2)
	fmt.Println("TestChargeDetailResult2 =>", res2)

	//针对 中南民族大学采购综合管理服务平台 站点 表格数据，匹配成交单位
	pattern := `<tr>.*<td>.*(成交供应商|成交单位|成交人)<br/>.*</td>.*<td.*>*(.{2,25}(公司))<br/>.*</td>.*</tr>`

	text := `
    "detail" : "<table border=\"1\">\t<tbody>\t\t<tr>\t\t\t<td>\t\t\t采购内容<br/>\t\t\t</td>\t\t\t<td colspan=\"3\">\t\t\t 元器件定制采购<br/>\t\t\t</td>\t\t</tr>\t\t<tr>\t\t\t<td>\t\t\t采购人所属单位<br/>\t\t\t</td>\t\t\t<td colspan=\"3\">\t\t\t 电子信息工程学院<br/>\t\t\t</td>\t\t</tr>\t\t<tr>\t\t\t<td>\t\t\t项目负责人<br/>\t\t\t</td>\t\t\t<td colspan=\"3\">\t\t\t 白迪<br/>\t\t\t</td>\t\t</tr><tr>\t\t\t<td>\t\t\t项目(课题)名称<br/>\t\t\t</td>\t\t\t<td colspan=\"3\">\t\t\t SAR雷达波形采集存储<br/>\t\t\t</td>\t\t</tr>\t\t<tr>\t\t\t<td>\t\t\t项目经费代码<br/>\t\t\t</td>\t\t\t<td colspan=\"3\">\t\t\t HZY20037<br/>\t\t\t</td>\t\t</tr>\t\t<tr>\t\t\t<td>\t\t\t成交供应商<br/>\t\t\t</td>\t\t\t<td colspan=\"3\">\t\t\t 武汉创新联胜<br/>\t\t\t</td>\t\t</tr>\t\t<tr>\t\t\t<td>\t\t\t成交金额(元)<br/>\t\t\t</td>\t\t\t<td colspan=> aaa <br/>\t\t\t</td>\t\t</tr>\t\t<tr>\t\t\t<td>\t\t\t主要成交内容（主产品品牌、型号、数量）<br/>\t\t\t</td>\t\t\t<td colspan=\"3\">\t\t\tSN65HVD232D MT41K256M16HA TXS02612RTWR<br/>\t\t\t</td>\t\t</tr>\t</tbody></table><br/> <br/> <br/> <br/>                                         中南民族大学采购与招投标工作领导小组办公室<br/>2022年05月20日",

`
	re := regexp.MustCompile(pattern)
	match := re.MatchString(text)
	fmt.Println("match", match)
}

func TestGetJyKey(t *testing.T) {
	data := `{
    "_id" : "59c8f51bc9ebc230022bd75b",
    "s_province" : "",
    "i_ts_guide" : 1,
    "s_unionid" : "oZQC_sx3IU9vsKys2rP4mh3KHP8I",
    "o_jy" : {
        "i_ratemode" : 2,
        "l_modifydate" : 1525432476,
        "a_key" : [
            {
                "key" : [
                    "冷藏车"
                ],
                "appendkey" : null,
                "matchway" : 0,
                "notkey" : null,
                "updatetime" : 1644287532
            },
            {
                "key" : [
                    "冷链"
                ],
                "appendkey" : null,
                "matchway" : 0,
                "notkey" : null,
                "updatetime" : 1644287543
            },
            {
                "key" : [
                    "冷链"
                ],
                "appendkey" : null,
                "matchway" : 0,
                "notkey" : null,
                "updatetime" : 1644287543
            },
            {
                "appendkey" : null,
                "key" : [
                    "运输车"
                ],
                "matchway" : 1,
                "notkey" : null,
                "updatetime" : 1644287552
            }
        ],
        "s_email" : "",
        "s_surprise" : "A",
        "o_area" : {
            "江苏" : [

            ]
        },
        "s_item" : "未分类",
        "a_infotype" : [

        ]
    }
}`

	var obj map[string]interface{}
	if err := json.Unmarshal([]byte(data), &obj); err != nil {
		panic(err)
	}
	tags := GetUserKeys(obj)

	fmt.Println(tags)
	//[冷藏车 冷链 冷链 运输车]
	fmt.Println("----------------------------------------")
	tags = RemoveDuplicates(tags)
	fmt.Println(tags)
	fmt.Println("----------------------------------------")
	fmt.Println("GetVipKey")
	vtags := GetVipKey(obj)
	fmt.Println(vtags)

	fmt.Println("----------------------------------------")
	fmt.Println("GetMemberKey")
	mtags := GetMemberKey(obj)
	fmt.Println(mtags)
}

func TestGetUserKeys(t *testing.T) {
	data := `{
		"o_member_jy" : {
        "i_matchway" : 1,
        "i_ratemode" :1,
        "i_wxpush" : 1,
        "a_items" : [
            {
                "a_key" : [
                    {
                        "notkey" : null,
                        "matchway" : 1,
                        "appendkey" : null,
                        "key" : [
                            "课程建设"
                        ],
                        "updatetime" : 1679386813
                    },
                    {
                        "appendkey" : null,
                        "key" : [
                            "智慧教室"
                        ],
                        "updatetime" :1679386813,
                        "notkey" : null,
                        "matchway" : 1
                    },
                    {
                        "appendkey" : null,
                        "key" : [
                            "全景教室"
                        ],
                        "updatetime" : 1679386813,
                        "notkey" : null,
                        "matchway" : 1
                    },
                    {
                        "updatetime" : 1679386813,
                        "notkey" : null,
                        "matchway" : 1,
                        "appendkey" : null,
                        "key" : [
                            "沉浸式教室"
                        ]
                    },
                    {
                        "notkey" : null,
                        "matchway" : 1,
                        "appendkey" : null,
                        "key" : [
                            "精品课程资源"
                        ],
                        "updatetime" : 1679386813
                    }
                ],
                "s_item" : "未分类",
                "updatetime" : 1679386813
            }
        ],
        "i_apppush" : 1
    },
    "s_phone" : "19917630508"
}
`

	var obj map[string]interface{}
	if err := json.Unmarshal([]byte(data), &obj); err != nil {
		panic(err)
	}
	userKeys := GetUserKeys(obj)
	fmt.Println(userKeys)
}

func TestDealYuce(t *testing.T) {
	title := "内乡县6.7万亩高标准农田示范区项目招标计划预公示"
	fmt.Println(title, "=>", DealYuce(title))

	title = "南阳市卧龙区行政审批服务中心装饰装修工程招标计划预公示招标公告"
	fmt.Println(title, "=>", DealYuce(title))

	title = "赣州蓉江新区各项目机电用镀锌钢管招标计划"
	fmt.Println(title, "=>", DealYuce(title))

	title = "公安县车胤中学公安县车胤中学台式计算机政府采购计划合同公告"
	fmt.Println(title, "=>", DealYuce(title))
}

func TestIsPurchasingIntent(t *testing.T) {
	data := map[string]interface{}{
		"title":   "【项目登记】黄山富丰新城商务服务中心酒店装饰设计招标【歙县】",
		"channel": "政府采购",
	}

	fmt.Println("data", IsPurchasingIntent(data))

	data2 := map[string]interface{}{
		"title":   "黄山富丰新城商务服务中心酒店装饰设计招标【歙县】项目登记",
		"channel": "政府采购",
	}
	fmt.Println("data2", IsPurchasingIntent(data2))

	data3 := map[string]interface{}{
		"title":   "黄山富丰新城商务服务中心酒店装饰设计招标【歙县】",
		"channel": "政府采购-项目登记",
	}
	fmt.Println("data3", IsPurchasingIntent(data3))
	data4 := map[string]interface{}{
		"title":   "黄山富丰新城商务服务中心酒店装饰设计招标【歙县】",
		"channel": "政府采购",
	}
	fmt.Println("data4", IsPurchasingIntent(data4))

	data5 := map[string]interface{}{
		"title": "黄山富丰新城商务服务中心酒店装饰设计招标【歙县】",
	}
	fmt.Println("data5", IsPurchasingIntent(data5))
}

func TestProcessTopscopeclass(t *testing.T) {
	tops := []string{"建筑工程", "水利水电", "能源化工", "弱电安防"}
	subs := []string{}

	newTops, newSubs := ProcessTopscopeclass(tops, subs)

	fmt.Println("Tops:", newTops)
	fmt.Println("Subs:", newSubs)
}
