123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323 |
- package class
- import (
- log "github.com/donnie4w/go-logger/logger"
- "go.mongodb.org/mongo-driver/bson"
- qu "qfw/util"
- "regexp"
- "strings"
- "time"
- ul "util"
- )
- func StartDealWithProductClassInfo() {
- //拆分合并产品与企业表
- //splitMergeMedicalInfo("nmpa_ylqx_2022")
- //splitMergeMedicalInfo("nmpa_ylqx_2023")
- //确认医疗分类,分类代码
- //confirmYlqxInfoClass()
- }
- func confirmYlqxInfoClass() {
- confirmFirst()
- confirmSecond()
- confirmThird()
- confirmFourth()
- confirmFifth()
- confirmSixth()
- confirmSeventh()
- confirmEighth()
- log.Debug("彻底结束~~~")
- }
- //医疗分类打标记
- func confirmFirst() {
- isok := 0
- dataArr, _ := ul.Save_Mgo.Find("nmpa_product_new", nil, nil, bson.M{
- "product_name": 1,
- })
- for _, v := range dataArr {
- product_class_1 := qu.ObjToString(v["product_class_1"])
- if product_class_1 != "" {
- continue
- }
- tmpid := ul.BsonTOStringId(v["_id"])
- product_name := qu.ObjToString(v["product_name"])
- if code := ul.YlqxNameCode[product_name]; code != "" {
- isok++
- _, update := calculationYlqxCode(code)
- update["isFlag"] = flagTagLog("", "1")
- ul.Save_Mgo.UpdateById("nmpa_product_new", tmpid, map[string]interface{}{
- "$set": update,
- })
- }
- }
- log.Debug("is over ... ", isok)
- time.Sleep(time.Second * 2)
- }
- func confirmSecond() {
- codeReg := regexp.MustCompile("20\\d{3}(\\d{2})")
- isok := 0
- dataArr, _ := ul.Save_Mgo.Find("nmpa_product_new", nil, nil, bson.M{
- "reg_no": 1,
- "classify": 1,
- "product_class_code": 1,
- "isFlag": 1,
- })
- for _, v := range dataArr {
- tmpid := ul.BsonTOStringId(v["_id"])
- product_class_code := qu.ObjToString(v["product_class_code"])
- if product_class_code != "" {
- continue
- }
- reg_no := qu.ObjToString(v["reg_no"])
- classify := qu.ObjToString(v["classify"])
- if strings.Contains(classify, "注册") {
- code_str := codeReg.FindString(reg_no)
- if code_str != "" {
- code := codeReg.ReplaceAllString(code_str, "${1}")
- name := ul.CodeRelation[code]
- if name != "" && code != "" {
- isok++
- ul.Save_Mgo.UpdateById("nmpa_product_new", tmpid, map[string]interface{}{
- "$set": bson.M{
- "product_class_1": name,
- "product_class_code": ul.YlqxNameCode[name],
- "isFlag": flagTagLog(qu.ObjToString(v["isFlag"]), "2"),
- },
- })
- }
- }
- }
- }
- log.Debug("is over ... ", isok)
- time.Sleep(time.Second * 2)
- }
- func confirmThird() {
- isok := 0
- dataArr, _ := ul.Save_Mgo.Find("nmpa_product_new", nil, nil, bson.M{
- "product_name": 1,
- "product_class_1": 1,
- "isFlag": 1,
- })
- for _, v := range dataArr {
- tmpid := ul.BsonTOStringId(v["_id"])
- product_name := qu.ObjToString(v["product_name"])
- product_class_1 := qu.ObjToString(v["product_class_1"])
- if product_class_1 == "" && strings.Contains(product_name, "试剂") {
- ul.Save_Mgo.UpdateById("nmpa_product_new", tmpid, map[string]interface{}{
- "$set": bson.M{
- "product_class_1": "体外诊断试剂",
- "product_class_code": "23",
- "isFlag": flagTagLog(qu.ObjToString(v["isFlag"]), "3"),
- },
- })
- isok++
- }
- }
- log.Debug("is over ... ", isok)
- }
- func confirmFourth() {
- isok := 0
- dataArr, _ := ul.Save_Mgo.Find("nmpa_product_new", nil, nil, bson.M{
- "reg_company": 1,
- "product_name": 1,
- "product_class_1": 1,
- "product_class_2": 1,
- "product_class_code": 1,
- "isFlag": 1,
- })
- for _, v := range dataArr {
- tmpid := ul.BsonTOStringId(v["_id"])
- old_name := qu.ObjToString(v["product_name"])
- old_class_code := qu.ObjToString(v["product_class_code"])
- reg_company := qu.ObjToString(v["reg_company"])
- old_class_1 := qu.ObjToString(v["product_class_1"])
- old_class_2 := qu.ObjToString(v["product_class_2"])
- if old_class_2 != "" {
- continue
- }
- resArr, codeArr := calculationYlqxScRange(reg_company, old_class_1, old_name)
- b, res, code := checkYlqxResultRightFourth(resArr, codeArr, old_class_1)
- if b && res != nil && code != "" && tmpid != "" {
- if len(code) > len(old_class_code) {
- isok++
- res["product_class_code"] = code
- res["isFlag"] = flagTagLog(qu.ObjToString(v["isFlag"]), "4")
- ul.Save_Mgo.UpdateById("nmpa_product_new", tmpid, map[string]interface{}{
- "$set": res,
- })
- }
- }
- }
- log.Debug("is over ... ", isok)
- time.Sleep(time.Second * 2)
- }
- func confirmFifth() {
- temp := loadFifthInfo()
- isok := 0
- dataArr, _ := ul.Save_Mgo.Find("nmpa_product_new", nil, nil, bson.M{
- "product_name": 1,
- "product_class_1": 1,
- "product_class_2": 1,
- "product_class_code": 1,
- "isFlag": 1,
- })
- for _, v := range dataArr {
- tmpid := ul.BsonTOStringId(v["_id"])
- old_name := qu.ObjToString(v["product_name"])
- old_class_code := qu.ObjToString(v["product_class_code"])
- old_class_1 := qu.ObjToString(v["product_class_1"])
- old_class_2 := qu.ObjToString(v["product_class_2"])
- if old_class_2 != "" || tmpid == "" {
- continue
- }
- if name := temp[old_name]; name != "" {
- if code := ul.YlqxNameCode[name]; code != "" {
- b, res := calculationYlqxCode(code)
- if b && (old_class_1 == "" || (qu.ObjToString(res["product_class_1"]) == old_class_1 && len(code) > len(old_class_code))) {
- isok++
- res["isFlag"] = flagTagLog(qu.ObjToString(v["isFlag"]), "5")
- ul.Save_Mgo.UpdateById("nmpa_product_new", tmpid, map[string]interface{}{
- "$set": res,
- })
- }
- }
- }
- }
- log.Debug("is over ... ", isok)
- time.Sleep(time.Second * 2)
- }
- func confirmSixth() {
- isok := 0
- dataArr, _ := ul.Save_Mgo.Find("nmpa_product_new", nil, nil, bson.M{
- "product_name": 1,
- "product_class_1": 1,
- "product_class_2": 1,
- "product_class_code": 1,
- "isFlag": 1,
- })
- for _, v := range dataArr {
- tmpid := ul.BsonTOStringId(v["_id"])
- old_name := qu.ObjToString(v["product_name"])
- old_class_code := qu.ObjToString(v["product_class_code"])
- old_class_1 := qu.ObjToString(v["product_class_1"])
- old_class_2 := qu.ObjToString(v["product_class_2"])
- if old_class_2 != "" || tmpid == "" {
- continue
- }
- new_name := cleanProductName(old_name)
- if code := ul.YlqxNameCode[new_name]; code != "" {
- b, res := calculationYlqxCode(code)
- if b && (old_class_1 == "" || (qu.ObjToString(res["product_class_1"]) == old_class_1 && len(code) > len(old_class_code))) {
- isok++
- res["isFlag"] = flagTagLog(qu.ObjToString(v["isFlag"]), "6")
- ul.Save_Mgo.UpdateById("nmpa_product_new", tmpid, map[string]interface{}{
- "$set": res,
- })
- }
- }
- }
- log.Debug("is over ... ", isok)
- time.Sleep(time.Second * 2)
- }
- func confirmSeventh() {
- isok := 0
- dataArr, _ := ul.Save_Mgo.Find("nmpa_product_new", nil, nil, bson.M{
- "product_name": 1,
- "product_class_1": 1,
- "product_class_2": 1,
- "isFlag": 1,
- })
- for _, v := range dataArr {
- tmpid := ul.BsonTOStringId(v["_id"])
- old_name := qu.ObjToString(v["product_name"])
- old_class_code := qu.ObjToString(v["product_class_code"])
- old_class_1 := qu.ObjToString(v["product_class_1"])
- old_class_2 := qu.ObjToString(v["product_class_2"])
- if old_class_2 != "" || tmpid == "" {
- continue
- }
- new_name := cleanProductName(old_name)
- resArr := []map[string]interface{}{}
- codeArr := []string{}
- matchArr := []string{}
- logArr := []map[string]interface{}{}
- if new_name != "" {
- for k1, v1 := range ul.YlqxNameCode {
- if (new_name == "医用退热凝胶" && k1 == "凝胶") || k1 == "蜡" {
- continue
- }
- if strings.Contains(new_name, k1) || strings.Contains(k1, new_name) {
- b, res := calculationYlqxCode(ul.YlqxNameCode[k1])
- if b && checkYlqxInfoRight(res, old_class_1, old_name) {
- logArr = append(logArr, map[string]interface{}{
- "name": k1,
- "code": v1,
- "class": res,
- })
- resArr = append(resArr, res)
- codeArr = append(codeArr, ul.YlqxNameCode[k1])
- matchArr = append(matchArr, k1)
- }
- }
- }
- }
- if len(resArr) > 0 {
- resArr, codeArr, matchArr = resultRepeat(resArr, codeArr, matchArr)
- resArr, codeArr, matchArr = resultMerge(resArr, codeArr, matchArr)
- //根据结果进行-分类选取逻辑
- b, res, code := checkYlqxResultRightSeventh(resArr, codeArr, matchArr, old_class_1)
- if b && res != nil && tmpid != "" && len(code) > len(old_class_code) {
- isok++
- res["isFlag"] = flagTagLog(qu.ObjToString(v["isFlag"]), "7")
- ul.Save_Mgo.UpdateById("nmpa_product_new", tmpid, map[string]interface{}{
- "$set": res,
- })
- }
- }
- }
- log.Debug("is over ... ", isok)
- time.Sleep(time.Second * 2)
- }
- func confirmEighth() {
- loadLastClassInfo()
- isok := 0
- dataArr, _ := ul.Save_Mgo.Find("nmpa_product_new", nil, nil, bson.M{
- "product_name": 1,
- "product_class_1": 1,
- "product_class_2": 1,
- "product_class_code": 1,
- "isFlag": 1,
- })
- for _, v := range dataArr {
- tmpid := ul.BsonTOStringId(v["_id"])
- product_name := qu.ObjToString(v["product_name"])
- product_class_code := qu.ObjToString(v["product_class_code"])
- product_class_1 := qu.ObjToString(v["product_class_1"])
- product_class_2 := qu.ObjToString(v["product_class_2"])
- res := ul.LastProductInfo[product_name]
- if product_class_2 == "" && ul.LastProductInfo[product_name] != nil {
- res_class_1 := res["product_class_1"]
- res_class_code := res["product_class_code"]
- if (product_class_1 == res_class_1 || product_class_1 == "") && len(res_class_code) > len(product_class_code) {
- isok++
- ul.Save_Mgo.UpdateById("nmpa_product_new", tmpid, map[string]interface{}{
- "$set": map[string]interface{}{
- "isFlag": flagTagLog(qu.ObjToString(v["isFlag"]), "8"),
- "product_class_1": qu.ObjToString(res["product_class_1"]),
- "product_class_2": qu.ObjToString(res["product_class_2"]),
- "product_class_3": qu.ObjToString(res["product_class_3"]),
- "product_class_4": qu.ObjToString(res["product_class_4"]),
- "product_class_code": qu.ObjToString(res["product_class_code"]),
- },
- })
- }
- }
- }
- log.Debug("is over ... ", isok)
- time.Sleep(time.Second * 2)
- }
|