123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- package service
- import (
- "log"
- "math"
- "regexp"
- . "app.yhyue.com/moapp/jybase/common"
- . "app.yhyue.com/moapp/jybase/date"
- . "bp.jydev.jianyu360.cn/BaseService/biService/entity"
- "github.com/zeromicro/go-zero/core/logx"
- )
- var fields = []string{"a_id", "a_name", "b_id", "b_name", "legal_person", "item", "create_time"}
- var regHan = regexp.MustCompile(`[\p{Han}]+`)
- func MakeEntRelation(entName string) int64 {
- if len([]rune(entName)) < 2 || !regHan.MatchString(entName) {
- return 1
- } else if JyBiTidb.CountBySql(`select count(1) as count from ent_relation where a_name=?`, entName) != 0 {
- logx.Info(entName, "已有企业关联关系")
- return 1
- } else if JyBiTidb.CountBySql(`select count(1) as count from group_company_name where company_name=?`, entName) != 0 {
- logx.Info(entName, "是集团公司")
- return 1
- }
- saveCount := 0
- companyBase, ok := MgoPingAn.FindOneByField("company_base", map[string]interface{}{"company_name": entName}, `{"company_id":1,"legal_person":1,"company_status":1}`)
- if !ok || companyBase == nil || len(*companyBase) == 0 {
- return 1
- }
- company_status, _ := (*companyBase)["company_status"].(string)
- if company_status != "在营(开业)企业" && company_status != "存续(在营、开业、在册)" {
- return 1
- }
- company_id, _ := (*companyBase)["company_id"].(string)
- legal_person, _ := (*companyBase)["legal_person"].(string)
- repeat := map[string]int{}
- ids := []string{}
- array := []interface{}{}
- //投资我的
- if companyPartner, ok := MgoPingAn.Find("company_partner", map[string]interface{}{"company_id": company_id}, `{"_id":-1}`, `{"stock_name_id":1,"is_personal":1}`, false, -1, -1); ok && companyPartner != nil {
- for _, v := range *companyPartner {
- is_personal := Int64All(v["is_personal"])
- stock_name_id, _ := v["stock_name_id"].(string)
- if stock_name_id == "" || is_personal != 0 || repeat[stock_name_id] > 0 {
- continue
- }
- ids = append(ids, stock_name_id)
- repeat[stock_name_id] = 1
- }
- }
- //我投资的
- if companyPartner, ok := MgoPingAn.Find("company_partner", map[string]interface{}{"stock_name_id": company_id}, `{"_id":-1}`, `{"company_id":1,"is_personal":1}`, false, -1, -1); ok && companyPartner != nil {
- for _, v := range *companyPartner {
- cId, _ := v["company_id"].(string)
- is_personal := Int64All(v["is_personal"])
- if cId == "" || is_personal != 0 || repeat[cId] > 0 {
- continue
- }
- ids = append(ids, cId)
- repeat[cId] = 2
- }
- }
- for k, v := range getCompanyBase(ids, legal_person) {
- saveCount++
- array = append(array, company_id, entName, k, v, legal_person, repeat[k], NowFormat(Date_Full_Layout))
- if saveCount == 200 {
- JyBiTidb.InsertBatch("ent_relation", fields, array)
- array = []interface{}{}
- }
- }
- if len(array) > 0 {
- JyBiTidb.InsertBatch("ent_relation", fields, array)
- }
- log.Println(entName, "企业关联关系保存", saveCount, "条")
- return 1
- }
- func getCompanyBase(ids []string, legalPerson string) map[string]string {
- m := map[string]string{}
- if len(ids) == 0 {
- return m
- }
- for i := 0; i < int(math.Ceil(float64(len(ids))/50)); i++ {
- start := i * 50
- end := start + 50
- if end > len(ids) {
- end = len(ids)
- }
- newIds := ids[start:end]
- if companyBase, ok := MgoPingAn.Find("company_base", map[string]interface{}{"company_id": map[string]interface{}{"$in": newIds}}, `{"_id":-1}`, `{"company_id":1,"company_name":1,"legal_person":1,"company_status":1}`, false, -1, -1); ok && companyBase != nil {
- for _, v := range *companyBase {
- if company_status, _ := v["company_status"].(string); company_status != "在营(开业)企业" && company_status != "存续(在营、开业、在册)" {
- continue
- } else if legal_person, _ := v["legal_person"].(string); legal_person != legalPerson {
- continue
- }
- company_name, _ := v["company_name"].(string)
- if company_name == "" {
- continue
- }
- company_id, _ := v["company_id"].(string)
- m[company_id] = company_name
- }
- }
- }
- return m
- }
|