123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472 |
- package main
- import (
- "go.uber.org/zap"
- "gorm.io/gorm"
- "jygit.jydev.jianyu360.cn/data_processing/common_utils"
- "jygit.jydev.jianyu360.cn/data_processing/common_utils/log"
- "jygit.jydev.jianyu360.cn/data_processing/common_utils/mongodb"
- "strings"
- )
- var (
- Mgo *mongodb.MongodbSim //87 环境,采集 存储的MongoDB
- MysqlDB *gorm.DB
- )
- func main() {
- Init()
- //dealProject() // 处理项目、债券数据
- //dealProjectBondRelation() //更新项目和债券的关联关系
- /*导出数据*/
- exportData()
- }
- // dealProject 处理项目相关数据
- func dealProject() {
- tables := strings.Split(GF.Mongob.List, ",")
- detailNames := strings.Split(GF.Mongob.Detail, ",")
- //table := GF.Mongob.List
- //detailName := GF.Mongob.Detail //专项债详细表
- sess := Mgo.GetMgoConn()
- defer Mgo.DestoryMongoConn(sess)
- for k, table := range tables {
- detailName := detailNames[k]
- /**
- 这里测试用,使用 “新建成都至达州至万州铁路(南充段)(万源市)” 这个项目测试,他有变更信息
- */
- //where1 := map[string]interface{}{
- // //"projectName": "新建成都至达州至万州铁路(南充段)(万源市)",
- // "projectName": "新建成都至达州至万州铁路(南充段)(万源市)",
- //}
- //query := sess.DB("py_theme").C(table).Find(where1).Select(nil).Iter()
- query := sess.DB("py_theme").C(table).Find(nil).Select(nil).Iter()
- count := 0
- for tmp := make(map[string]interface{}); query.Next(tmp); count++ {
- if count%100 == 0 {
- log.Info("current:", zap.Int("count", count), zap.Any("projectName", tmp["projectName"]), zap.String(table, detailName))
- }
- projectName := util.ObjToString(tmp["projectName"])
- //
- where := map[string]interface{}{
- "project.jcxx.projectName": projectName,
- }
- detail, _ := Mgo.FindOne(detailName, where)
- if len(*detail) == 0 {
- continue
- }
- //1.项目数据
- if project, ok := (*detail)["project"].(map[string]interface{}); ok {
- //1.基础信息
- var projectId int
- if jcxx, ok := project["jcxx"].(map[string]interface{}); ok {
- projectId = dealProjectBaseInfo(jcxx, projectName)
- }
- //2.还本付息
- if hbfx, ok := project["hbfx"].(map[string]interface{}); ok {
- dealProjectRepayment(hbfx, projectName, projectId)
- }
- //3.变更
- if bg, ok := project["bg"].([]interface{}); ok {
- if len(bg) > 0 {
- dealProjectChange(bg, projectName, projectId)
- }
- }
- //4.发行明细
- if fxmx, ok := project["fxmx"].([]interface{}); ok {
- if len(fxmx) > 0 {
- dealProjectIssueDetails(fxmx, projectName, projectId)
- }
- }
- }
- //2.处理债券信息
- if bonds, ok := (*detail)["bond"].([]interface{}); ok {
- dealBondInfo(bonds, projectName)
- }
- }
- log.Info("dealProject over ", zap.Int("total", count))
- }
- }
- // dealProjectBaseInfo 处理项目基本信息
- func dealProjectBaseInfo(jcxx map[string]interface{}, projectName string) (projectID int) {
- project_base_info_exist := ProjectBaseInfo{}
- err := MysqlDB.Where(&ProjectBaseInfo{ProjectName: projectName}).First(&project_base_info_exist).Error
- if err != nil && err != gorm.ErrRecordNotFound {
- // 处理查询错误
- log.Error("dealProjectBaseInfo;Error checking for existing project", zap.Error(err))
- }
- //当前项目基本信息已经存在
- if project_base_info_exist.ID > 0 {
- // 直接修改已存在记录的字段
- project_base_info_exist.TotalInvestment = util.Float64All(jcxx["totalInvestment"])
- project_base_info_exist.Area = util.ObjToString(jcxx["regionName"])
- project_base_info_exist.City = strings.ReplaceAll(util.ObjToString(jcxx["cityName"]), "本级", "")
- project_base_info_exist.District = strings.ReplaceAll(util.ObjToString(jcxx["countyName"]), "本级", "")
- project_base_info_exist.Capital = util.Float64All(jcxx["capital"])
- project_base_info_exist.ApplyTotalBonds = util.Float64All(jcxx["applyDebt"])
- project_base_info_exist.OtherDebtFinancing = util.Float64All(jcxx["portfolioFinancing"])
- project_base_info_exist.SpecialDebtCapital = util.Float64All(jcxx["specialDebtAsCapital"])
- project_base_info_exist.ExpectedReturn = util.Float64All(jcxx["expectedReturn"])
- project_base_info_exist.ProjectCost = util.IntAll(jcxx["projectCost"])
- project_base_info_exist.ProjectDomain = util.ObjToString(jcxx["projectTypeName3"])
- project_base_info_exist.ProjectOwner = util.ObjToString(jcxx["projectSubject"])
- project_base_info_exist.StartDate = util.ObjToString(jcxx["startDate"])
- project_base_info_exist.EndDate = util.ObjToString(jcxx["endDate"])
- project_base_info_exist.OperationStartDate = util.ObjToString(jcxx["operationStartDate"])
- project_base_info_exist.OperationEndDate = util.ObjToString(jcxx["operationEndDate"])
- project_base_info_exist.SourceIncome = util.ObjToString(jcxx["sourceIncome"])
- project_base_info_exist.ConstructionContent = util.ObjToString(jcxx["constructionContent"])
- project_base_info_exist.Remarks = util.ObjToString(jcxx["remarks"])
- project_base_info_exist.OtherDebtFinancingSource = util.ObjToString(jcxx["portfolioFinancingSource"])
- project_base_info_exist.CostIncomePercent = util.ObjToString(jcxx["costIncomePercent"])
- project_base_info_exist.CoverageMultiple = util.Float64All(jcxx["coverageMultiple"])
- project_base_info_exist.CompetentDepartment = util.ObjToString(jcxx["implementingAgency"])
- project_base_info_exist.AccountingFirm = util.ObjToString(jcxx["accountingFirm"])
- project_base_info_exist.LawFirm = util.ObjToString(jcxx["lawFirm"])
- project_base_info_exist.UpdateDate = util.ObjToString(jcxx["updateTime"])
- project_base_info_exist.CreateDate = util.ObjToString(jcxx["createTime"])
- // 使用 Save 来更新
- err = MysqlDB.Save(&project_base_info_exist).Error
- if err != nil {
- log.Info("dealProject Save (Update) ", zap.Error(err))
- }
- return project_base_info_exist.ID
- } else {
- project_base_info := ProjectBaseInfo{
- ProjectName: projectName,
- TotalInvestment: util.Float64All(jcxx["totalInvestment"]),
- Area: util.ObjToString(jcxx["regionName"]),
- City: strings.ReplaceAll(util.ObjToString(jcxx["cityName"]), "本级", ""),
- District: strings.ReplaceAll(util.ObjToString(jcxx["countyName"]), "本级", ""),
- Capital: util.Float64All(jcxx["capital"]),
- ApplyTotalBonds: util.Float64All(jcxx["applyDebt"]),
- OtherDebtFinancing: util.Float64All(jcxx["portfolioFinancing"]),
- SpecialDebtCapital: util.Float64All(jcxx["specialDebtAsCapital"]),
- ExpectedReturn: util.Float64All(jcxx["expectedReturn"]),
- ProjectCost: util.IntAll(jcxx["projectCost"]),
- ProjectDomain: util.ObjToString(jcxx["projectTypeName3"]), // 项目领域
- ProjectOwner: util.ObjToString(jcxx["projectSubject"]), //项目业主
- StartDate: util.ObjToString(jcxx["startDate"]),
- EndDate: util.ObjToString(jcxx["endDate"]),
- OperationStartDate: util.ObjToString(jcxx["operationStartDate"]),
- OperationEndDate: util.ObjToString(jcxx["operationEndDate"]),
- SourceIncome: util.ObjToString(jcxx["sourceIncome"]),
- ConstructionContent: util.ObjToString(jcxx["constructionContent"]),
- Remarks: util.ObjToString(jcxx["remarks"]),
- OtherDebtFinancingSource: util.ObjToString(jcxx["portfolioFinancingSource"]),
- CostIncomePercent: util.ObjToString(jcxx["costIncomePercent"]),
- CoverageMultiple: util.Float64All(jcxx["coverageMultiple"]),
- CompetentDepartment: util.ObjToString(jcxx["implementingAgency"]),
- AccountingFirm: util.ObjToString(jcxx["accountingFirm"]),
- LawFirm: util.ObjToString(jcxx["lawFirm"]),
- CreateDate: util.ObjToString(jcxx["createTime"]),
- UpdateDate: util.ObjToString(jcxx["updateTime"]),
- }
- err = MysqlDB.Create(&project_base_info).Error
- if err != nil {
- log.Info("dealProjectBaseInfo;dealProject Create ", zap.Error(err), zap.String("project", projectName))
- }
- return project_base_info.ID
- }
- }
- // dealProjectRepayment 处理项目-还本付息
- func dealProjectRepayment(hbfx map[string]interface{}, projectName string, projectID int) {
- project_repayment_exist := ProjectRepayment{}
- err := MysqlDB.Where(&ProjectRepayment{ProjectName: projectName, BondName: util.ObjToString(hbfx["bondName"])}).First(&project_repayment_exist).Error
- if err != nil && err != gorm.ErrRecordNotFound {
- // 处理查询错误
- log.Error("dealProjectRepayment;Error checking for existing project", zap.Error(err))
- }
- if project_repayment_exist.ID > 0 {
- project_repayment_exist.IssueTerm = util.IntAll(hbfx["issueTerm"])
- project_repayment_exist.PayInterestMethodName = util.ObjToString(hbfx["payInterestMethodName"])
- project_repayment_exist.ValueDate = util.ObjToString(hbfx["valueDate"])
- project_repayment_exist.InterestDate = util.ObjToString(hbfx["payInterestDate"])
- project_repayment_exist.LastInterestDate = util.ObjToString(hbfx["latelyPayInterestDate"])
- project_repayment_exist.ReminderRepayDays = util.IntAll(hbfx["days"])
- project_repayment_exist.MaturityDate = util.ObjToString(hbfx["expiryDate"])
- project_repayment_exist.DebtService = util.Float64All(hbfx["repayCapitalWithInterest"])
- project_repayment_exist.RedemptionMethod = util.ObjToString(hbfx["redemptionMethod"])
- project_repayment_exist.CumulativePayInterest = util.IntAll(hbfx["cumulativePayInterest"])
- project_repayment_exist.IsEarlyRepayPrincipal = util.ObjToString(hbfx["isEarlyRepayPrincipal"])
- project_repayment_exist.Remarks = util.ObjToString(hbfx["remarks"])
- // 使用 Save 来更新
- err = MysqlDB.Save(&project_repayment_exist).Error
- if err != nil {
- log.Info("dealProjectRepayment Save (Update) ", zap.Error(err))
- }
- } else {
- project_payment := ProjectRepayment{
- ProjectName: projectName,
- ProjectID: projectID,
- BondName: util.ObjToString(hbfx["bondName"]),
- IssueTerm: util.IntAll(hbfx["issueTerm"]),
- PayInterestMethodName: util.ObjToString(hbfx["payInterestMethodName"]),
- ValueDate: util.ObjToString(hbfx["valueDate"]),
- InterestDate: util.ObjToString(hbfx["payInterestDate"]),
- LastInterestDate: util.ObjToString(hbfx["latelyPayInterestDate"]),
- ReminderRepayDays: util.IntAll(hbfx["days"]), //提醒还款天数
- MaturityDate: util.ObjToString(hbfx["expiryDate"]), //到期日
- DebtService: util.Float64All(hbfx["repayCapitalWithInterest"]), //还本付息(万元)
- RedemptionMethod: util.ObjToString(hbfx["redemptionMethod"]),
- CumulativePayInterest: util.IntAll(hbfx["cumulativePayInterest"]),
- IsEarlyRepayPrincipal: util.ObjToString(hbfx["isEarlyRepayPrincipal"]),
- Remarks: util.ObjToString(hbfx["remarks"]),
- }
- err = MysqlDB.Create(&project_payment).Error
- if err != nil {
- log.Info("dealProjectRepayment;dealProject Create ", zap.Error(err), zap.String("project", projectName))
- }
- }
- }
- // dealProjectChange 处理项目变更
- func dealProjectChange(bg []interface{}, projectName string, projectId int) {
- for _, v := range bg {
- if bgda, ok := v.(map[string]interface{}); ok {
- project_change := ProjectChange{
- ProjectName: projectName,
- ProjectID: projectId,
- ChangeContent: util.ObjToString(bgda["changeContent"]),
- UpdateReason: util.ObjToString(bgda["updateReason"]),
- SubmitTime: util.ObjToString(bgda["submitTime"]),
- }
- err := MysqlDB.Create(&project_change).Error
- if err != nil {
- log.Info("dealProjectChange; Create err", zap.Error(err))
- }
- }
- }
- }
- // dealProjectIssueDetails 处理项目发行明细
- func dealProjectIssueDetails(fxmx []interface{}, projectName string, projectId int) {
- for _, v := range fxmx {
- if fx, ok := v.(map[string]interface{}); ok {
- project_bach_name := util.ObjToString(fx["projectBatchName"])
- issue_detail_exist := ProjectIssueDetails{}
- err := MysqlDB.Where(&ProjectIssueDetails{ProjectName: projectName, ProjectBachName: project_bach_name, BondName: util.ObjToString(fx["bondName"])}).First(&issue_detail_exist).Error
- if err != nil && err != gorm.ErrRecordNotFound {
- // 处理查询错误
- log.Error("dealProjectIssueDetails;Error checking for existing project", zap.Error(err))
- }
- // 存在
- if issue_detail_exist.ID > 0 {
- issue_detail_exist.FirstPublishDate = util.ObjToString(fx["firstPublishDate"])
- issue_detail_exist.BatchNum = util.IntAll(fx["batchNum"])
- issue_detail_exist.PresentIssueAmount = util.Float64All(fx["presentIssueAmount"])
- issue_detail_exist.IssueInterestRate = util.Float64All(fx["issueInterestRate"])
- issue_detail_exist.PresentAsSpecialAmount = util.Float64All(fx["presentAsSpecialAmount"])
- issue_detail_exist.TotalIssueAmount = util.Float64All(fx["totalIssueAmount"])
- issue_detail_exist.ReviseLog = util.ObjToString(fx["revise_log"])
- err = MysqlDB.Save(&issue_detail_exist).Error
- if err != nil {
- log.Info("dealProjectIssueDetails Save (Update) ", zap.Error(err))
- }
- } else {
- issue_detail := ProjectIssueDetails{
- ProjectName: projectName,
- ProjectID: projectId,
- ProjectBachName: project_bach_name,
- BondName: util.ObjToString(fx["bondName"]),
- FirstPublishDate: util.ObjToString(fx["firstPublishDate"]),
- BatchNum: util.IntAll(fx["batchNum"]),
- PresentIssueAmount: util.Float64All(fx["presentIssueAmount"]),
- IssueInterestRate: util.Float64All(fx["issueInterestRate"]),
- PresentAsSpecialAmount: util.Float64All(fx["presentAsSpecialAmount"]),
- TotalIssueAmount: util.Float64All(fx["totalIssueAmount"]),
- ReviseLog: util.ObjToString(fx["revise_log"]),
- }
- err := MysqlDB.Create(&issue_detail).Error
- if err != nil {
- log.Info("dealProjectIssueDetails; Create err", zap.Error(err))
- }
- }
- }
- }
- }
- // dealBondInfo 处理债券信息
- func dealBondInfo(bonds []interface{}, projectName string) {
- for _, v := range bonds {
- if bond, ok := v.(map[string]interface{}); ok {
- //1.基本信息
- if jbxx, ok := bond["jbxx"].(map[string]interface{}); ok {
- dealBondBase(jbxx, projectName)
- }
- //2.债券-修改记录;xgjl
- if xgjl, ok := bond["xgjl"].([]interface{}); ok && len(xgjl) > 0 {
- dealBondChange(xgjl)
- }
- ////3.相关小项目
- //if xgxxx, ok := bond["xgxxx"].([]interface{}); ok && len(xgxxx) > 0 {
- // dealRelationProject(xgxxx)
- //}
- }
- }
- }
- // dealBondBase 处理债券基本信息
- func dealBondBase(jbxx map[string]interface{}, projectName string) {
- bond_info_exist := BondInfo{}
- err := MysqlDB.Where(&BondInfo{BondName: util.ObjToString(jbxx["bondName"]), BondNo: util.ObjToString(jbxx["bondNo"])}).First(&bond_info_exist).Error
- if err != nil && err != gorm.ErrRecordNotFound {
- // 处理查询错误
- log.Error("dealBondBase;Error checking for existing project", zap.Error(err))
- }
- if bond_info_exist.ID > 0 {
- bond_info_exist.BondShortName = util.ObjToString(jbxx["bondName"])
- bond_info_exist.Area = util.ObjToString(jbxx["regionName"])
- bond_info_exist.BondNature = util.ObjToString(jbxx["bondType1Name"])
- bond_info_exist.BondType = util.ObjToString(jbxx["bondType2Name"])
- bond_info_exist.OfficialProjectType = util.ObjToString(jbxx["projectType1Name"])
- bond_info_exist.TotalAmount = util.Float64All(jbxx["totalAmount"])
- bond_info_exist.IssueDate = util.ObjToString(jbxx["issueDate"])
- bond_info_exist.IssuePlace = util.ObjToString(jbxx["issuePlaceName"])
- bond_info_exist.IssueTerm = util.IntAll(jbxx["issueTerm"])
- bond_info_exist.IssueInterestRate = util.ObjToString(jbxx["issueInterestRate"])
- bond_info_exist.IssuePhase = util.ObjToString(jbxx["issuePhase"])
- bond_info_exist.WayOfPayInterest = util.ObjToString(jbxx["payInterestMethodName"])
- bond_info_exist.NewBondAmount = util.Float64All(jbxx["newBondAmount"])
- bond_info_exist.CounterBondAmount = util.Float64All(jbxx["counterBondAmount"])
- bond_info_exist.RefinancingBondAmount = util.Float64All(jbxx["refinancingBondAmount"])
- bond_info_exist.RedemptionMethod = util.ObjToString(jbxx["redemptionMethod"])
- bond_info_exist.ValueDate = util.ObjToString(jbxx["valueDate"])
- bond_info_exist.ExpiryDate = util.ObjToString(jbxx["expiryDate"])
- bond_info_exist.PayInterestDate = util.ObjToString(jbxx["payInterestDate"])
- bond_info_exist.LatePayInterestDate = util.ObjToString(jbxx["latelyPayInterestDate"])
- bond_info_exist.IsEarlyRepayPrincipal = util.ObjToString(jbxx["isEarlyRepayPrincipal"])
- bond_info_exist.CumulativePayInterest = util.Float64All(jbxx["cumulativePayInterest"])
- bond_info_exist.IsCounterBond = util.ObjToString(jbxx["isCounterBond"])
- err = MysqlDB.Save(&bond_info_exist).Error
- if err != nil {
- log.Info("dealBondBase Save (Update) ", zap.Error(err))
- }
- } else {
- bond_info := BondInfo{
- BondName: util.ObjToString(jbxx["bondName"]),
- BondShortName: util.ObjToString(jbxx["bondShortName"]),
- BondNo: util.ObjToString(jbxx["bondNo"]),
- Area: util.ObjToString(jbxx["regionName"]),
- BondNature: util.ObjToString(jbxx["bondType1Name"]),
- BondType: util.ObjToString(jbxx["bondType2Name"]),
- OfficialProjectType: util.ObjToString(jbxx["projectType1Name"]),
- TotalAmount: util.Float64All(jbxx["totalAmount"]),
- IssueDate: util.ObjToString(jbxx["issueDate"]),
- IssuePlace: util.ObjToString(jbxx["issuePlaceName"]),
- IssueTerm: util.IntAll(jbxx["issueTerm"]),
- IssueInterestRate: util.ObjToString(jbxx["issueInterestRate"]),
- IssuePhase: util.ObjToString(jbxx["issuePhase"]),
- WayOfPayInterest: util.ObjToString(jbxx["payInterestMethodName"]),
- NewBondAmount: util.Float64All(jbxx["newBondAmount"]),
- CounterBondAmount: util.Float64All(jbxx["counterBondAmount"]),
- RefinancingBondAmount: util.Float64All(jbxx["refinancingBondAmount"]),
- RedemptionMethod: util.ObjToString(jbxx["redemptionMethod"]),
- ValueDate: util.ObjToString(jbxx["valueDate"]),
- ExpiryDate: util.ObjToString(jbxx["expiryDate"]),
- PayInterestDate: util.ObjToString(jbxx["payInterestDate"]),
- LatePayInterestDate: util.ObjToString(jbxx["latelyPayInterestDate"]),
- RemindPayDays: util.IntAll(jbxx["days"]),
- LastPayInterest: util.Float64All(jbxx["lastPayInterest"]),
- IsEarlyRepayPrincipal: util.ObjToString(jbxx["isEarlyRepayPrincipal"]),
- CumulativePayInterest: util.Float64All(jbxx["cumulativePayInterest"]),
- IsCounterBond: util.ObjToString(jbxx["isCounterBond"]),
- }
- //
- err = MysqlDB.Create(&bond_info).Error
- if err != nil {
- log.Info("dealBondBase;dealProject Create ", zap.Error(err), zap.String("project", projectName))
- }
- }
- }
- // dealBondChange 修改债券修改信息
- func dealBondChange(xgjl []interface{}) {
- }
- // dealProjectBondRelation 处理项目债券关联关系
- func dealProjectBondRelation() {
- //detailName := GF.Mongob.Detail //专项债详细表
- detailNames := strings.Split(GF.Mongob.Detail, ",")
- sess := Mgo.GetMgoConn()
- defer Mgo.DestoryMongoConn(sess)
- for _, detailName := range detailNames {
- query := sess.DB("py_theme").C(detailName).Find(nil).Select(nil).Iter()
- count := 0
- for tmp := make(map[string]interface{}); query.Next(tmp); count++ {
- if count%100 == 0 {
- log.Info("current:", zap.Int("count", count))
- }
- if project, ok := tmp["project"].(map[string]interface{}); ok {
- //1.基础信息
- if jcxx, ok := project["jcxx"].(map[string]interface{}); ok {
- project_name := util.ObjToString(jcxx["projectName"])
- //fmt.Println(project_name)
- project_base_info_exist := ProjectBaseInfo{}
- err := MysqlDB.Where(&ProjectBaseInfo{ProjectName: project_name}).First(&project_base_info_exist).Error
- if err != nil && err != gorm.ErrRecordNotFound {
- // 处理查询错误
- log.Error("dealProjectBondRelation;Error checking for existing project", zap.Error(err))
- } else {
- if project_base_info_exist.ID > 0 {
- //1.更新项目的创建时间
- project_base_info_exist.CreateDate = util.ObjToString(jcxx["createTime"])
- project_base_info_exist.UpdateDate = util.ObjToString(jcxx["updateTime"])
- err = MysqlDB.Save(&project_base_info_exist).Error
- if err != nil {
- log.Info("dealProjectBondRelation Save (Update) ", zap.Error(err))
- }
- //2.更新项目和债券的对应关系
- if fxmx, ok := project["fxmx"].([]interface{}); ok {
- for _, v := range fxmx {
- if fx, ok := v.(map[string]interface{}); ok {
- bond_name := util.ObjToString(fx["bondName"])
- bond_info_exist := BondInfo{}
- err := MysqlDB.Where(&BondInfo{BondName: bond_name}).First(&bond_info_exist).Error
- if err != nil && err != gorm.ErrRecordNotFound {
- // 处理查询错误
- log.Error("dealProjectBondRelation;Error checking for existing project", zap.Error(err))
- } else {
- // 整理对应关系
- relation := ProjectBondRelation{
- ProjectID: project_base_info_exist.ID,
- BondID: bond_info_exist.ID,
- }
- result := MysqlDB.FirstOrCreate(&relation, ProjectBondRelation{
- ProjectID: relation.ProjectID,
- BondID: relation.BondID,
- })
- if result.Error != nil {
- // 处理错误
- log.Error("dealProjectBondRelation;Error checking for existing project", zap.Error(err), zap.String(project_name, bond_name))
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- log.Info("dealProjectBondRelation", zap.Any("数据处理完毕", count))
- }
- }
|