diff --git a/internal/domains/api/services/processors/qygl/qygl3f8e_processor.go b/internal/domains/api/services/processors/qygl/qygl3f8e_processor.go index 71e83f3..7d74c9c 100644 --- a/internal/domains/api/services/processors/qygl/qygl3f8e_processor.go +++ b/internal/domains/api/services/processors/qygl/qygl3f8e_processor.go @@ -6,6 +6,7 @@ import ( "errors" "fmt" "math/rand" + "regexp" "sort" "strconv" "strings" @@ -947,40 +948,84 @@ func buildFinalResponse(enrichedCompanies []EnrichedCompanyInfo, allCompanies [] } return nil } + + // 处理 regCap:分离数字和单位 + // 例如:"100.000000万人民币" -> regCapital: "100.000000", regCapitalCurrency: "万人民币" + regCapital := "" + regCapitalCurrency := "万人民币" + if regCapVal := getVal("regCap", "regCapital"); regCapVal != nil { + if regCapStr, ok := regCapVal.(string); ok && regCapStr != "" { + // 使用正则表达式提取数字部分(包括小数点) + re := regexp.MustCompile(`[\d.]+`) + matches := re.FindString(regCapStr) + if matches != "" { + regCapital = matches + // 提取单位部分(数字之后的所有内容) + if numIndex := strings.Index(regCapStr, matches); numIndex >= 0 { + unitPart := regCapStr[numIndex+len(matches):] + unitPart = strings.TrimSpace(unitPart) + if unitPart != "" { + regCapitalCurrency = unitPart + } + } + } else { + // 如果没有找到数字,直接使用原值 + regCapital = regCapStr + } + } + } + // 如果 regCapCur 有值,优先使用它 + if regCapCurVal := getVal("regCapCur", "regCapitalCurrency"); regCapCurVal != nil { + if regCapCurStr, ok := regCapCurVal.(string); ok && regCapCurStr != "" { + regCapitalCurrency = regCapCurStr + } + } + + // 构建完整的 basicInfo(按前端期望的格式) basicInfo := map[string]interface{}{} - if v := getVal("regStatus"); v != nil { + // regStatus(从 orgStatus 获取) + if v := getVal("orgStatus", "regStatus"); v != nil { basicInfo["regStatus"] = v } - if v := getVal("creditCode", "creditNo"); v != nil { + // creditCode(从 creditNo 获取) + if v := getVal("creditNo", "creditCode"); v != nil { basicInfo["creditCode"] = v } - if v := getVal("regCapital"); v != nil { - basicInfo["regCapital"] = v + // regCapital(从 regCap 中提取的数字部分) + if regCapital != "" { + basicInfo["regCapital"] = regCapital } - if v := getVal("regCapitalCurrency"); v != nil { - basicInfo["regCapitalCurrency"] = v + // regCapitalCurrency(从 regCap 中提取的单位部分,或从 regCapCur 获取) + if regCapitalCurrency != "" { + basicInfo["regCapitalCurrency"] = regCapitalCurrency } - if v := getVal("estiblishTime"); v != nil { + // estiblishTime(从 esDate 获取) + if v := getVal("esDate", "estiblishTime", "establishDate"); v != nil { basicInfo["estiblishTime"] = v } - if v := getVal("regNumber", "regNo"); v != nil { + // regNumber(从 regNo 获取) + if v := getVal("regNo", "regNumber"); v != nil { basicInfo["regNumber"] = v } - if v := getVal("entType"); v != nil { + // entType(从 orgType 获取) + if v := getVal("orgType", "entType"); v != nil { basicInfo["entType"] = v } + // industry if v := getVal("industry"); v != nil { basicInfo["industry"] = v } + // legalPersonName(从 ryName 获取) + if v := getVal("ryName", "legalPersonName"); v != nil { + basicInfo["legalPersonName"] = v + } + // 保留其他可能的字段 if v := getVal("regInstitute"); v != nil { basicInfo["regInstitute"] = v } if v := getVal("approvedTime"); v != nil { basicInfo["approvedTime"] = v } - if v := getVal("legalPersonName"); v != nil { - basicInfo["legalPersonName"] = v - } if v := getVal("phone"); v != nil { basicInfo["phone"] = v } @@ -1060,16 +1105,49 @@ func buildFinalResponse(enrichedCompanies []EnrichedCompanyInfo, allCompanies [] companyMap["staffList"] = staffList } + // 辅助函数:将历史记录数据转换为前端期望的格式 + // 如果是数组,转换为 { items: [], total: 0 } 格式 + // 如果是空对象,转换为空数组 + convertHistoryData := func(data interface{}) interface{} { + if data == nil { + return []interface{}{} + } + // 如果是数组,转换为 { items: [], total: 0 } 格式 + if arr, ok := data.([]interface{}); ok { + return map[string]interface{}{ + "items": arr, + "total": len(arr), + } + } + // 如果是 map,检查是否为空 + if dataMap, ok := data.(map[string]interface{}); ok { + if len(dataMap) == 0 { + return []interface{}{} + } + // 如果已经有 items 和 total 字段,直接返回 + if _, hasItems := dataMap["items"]; hasItems { + return dataMap + } + // 否则转换为 { items: [], total: 0 } 格式 + return map[string]interface{}{ + "items": []interface{}{}, + "total": 0, + } + } + return []interface{}{} + } + // 检查是否是已处理的企业(前3个) if enriched, exists := processedMap[company.Index]; exists { // 已处理的企业,添加详细信息 - companyMap["invest_history"] = enriched.InvestHistory - companyMap["financing_history"] = enriched.FinancingHistory - companyMap["punishment_info"] = enriched.PunishmentInfo - companyMap["abnormal_info"] = enriched.AbnormalInfo - companyMap["lawsuit_info"] = enriched.LawsuitInfo - companyMap["own_tax"] = enriched.OwnTax - companyMap["tax_contravention"] = enriched.TaxContravention + companyMap["invest_history"] = convertHistoryData(enriched.InvestHistory) + companyMap["financing_history"] = convertHistoryData(enriched.FinancingHistory) + companyMap["punishment_info"] = convertHistoryData(enriched.PunishmentInfo) + companyMap["abnormal_info"] = convertHistoryData(enriched.AbnormalInfo) + // lawsuit_info 改为 lawsuitInfo(驼峰命名) + companyMap["lawsuitInfo"] = enriched.LawsuitInfo + companyMap["own_tax"] = convertHistoryData(enriched.OwnTax) + companyMap["tax_contravention"] = convertHistoryData(enriched.TaxContravention) } else { // 未处理的企业,添加空的详细信息 companyMap["invest_history"] = map[string]interface{}{}