package db import ( "context" "fmt" "github.com/issue9/conv" "github.com/sirupsen/logrus" "time" "youngee_b_api/model/gorm_model" "youngee_b_api/model/http_model" ) func GetWorkspaceNums(ctx context.Context, enterpriseID int64) (*http_model.WorkspaceNums, error) { var workspaceNums http_model.WorkspaceNums var PaymentPending, DraftNum, RecruitingFullNum, ExecutionSpecNum, ExecutionFullNum int64 db := GetReadDB(ctx) db = db.Model(gorm_model.ProjectInfo{}).Where("enterprise_id = ?", enterpriseID) db.Where("project_status = 1").Count(&DraftNum) db1 := GetReadDB(ctx) db1 = db1.Model(gorm_model.ProjectInfo{}).Where("enterprise_id = ?", enterpriseID) db1.Where("project_status = 4 AND project_type = 1").Count(&RecruitingFullNum) db2 := GetReadDB(ctx) db2 = db2.Model(gorm_model.ProjectInfo{}).Where("enterprise_id = ?", enterpriseID) db2.Where("project_status = 6").Count(&PaymentPending) db3 := GetReadDB(ctx) db3 = db3.Model(gorm_model.ProjectInfo{}).Where("enterprise_id = ?", enterpriseID) db3.Where("project_status = 9 AND project_type = 2").Count(&ExecutionSpecNum) db4 := GetReadDB(ctx) db4 = db4.Model(gorm_model.ProjectInfo{}).Where("enterprise_id = ?", enterpriseID) db4.Where("project_status = 9 AND project_type = 1").Count(&ExecutionFullNum) var ProjectFunds float64 db5 := GetReadDB(ctx) db5 = db5.Model(gorm_model.Enterprise{}).Select("frozen_balance").Where("enterprise_id = ?", enterpriseID).First(&ProjectFunds) workspaceNums.PaymentPending = PaymentPending workspaceNums.DraftNum = DraftNum workspaceNums.RecruitingFullNum = RecruitingFullNum workspaceNums.ExecutionSpecNum = ExecutionSpecNum workspaceNums.ExecutionFullNum = ExecutionFullNum workspaceNums.ProjectFunds = ProjectFunds return &workspaceNums, nil } func GetWorkspacePieNums(ctx context.Context, enterpriseID int64) (*http_model.WorkspacePieNums, error) { var workspaceNums http_model.WorkspacePieNums var DataPendingNum, LinkPendingNum, ScriptPendingNum int64 db := GetReadDB(ctx) var DataProjectIDs []int64 db = db.Model(gorm_model.ProjectInfo{}).Select("project_id").Where("enterprise_id = ? AND project_status = 9", enterpriseID).Find(&DataProjectIDs) db1 := GetReadDB(ctx) db1.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id IN ? AND task_stage = 14", DataProjectIDs).Count(&DataPendingNum) db2 := GetReadDB(ctx) var scriptProjectIDs []int64 db2 = db2.Model(gorm_model.ProjectInfo{}).Select("project_id").Where("enterprise_id = ? AND project_status = 9", enterpriseID).Find(&scriptProjectIDs) db3 := GetReadDB(ctx) db3.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id IN ? AND task_stage = 8", scriptProjectIDs).Count(&ScriptPendingNum) db4 := GetReadDB(ctx) var linkProjectIDs []int64 db4 = db4.Model(gorm_model.ProjectInfo{}).Select("project_id").Where("enterprise_id = ? AND project_status = 9", enterpriseID).Find(&linkProjectIDs) db5 := GetReadDB(ctx) db5 = db5.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("project_id IN ? AND task_stage = 12", linkProjectIDs).Count(&LinkPendingNum) workspaceNums.DataPendingNum = DataPendingNum workspaceNums.LinkPendingNum = LinkPendingNum workspaceNums.ScriptPendingNum = ScriptPendingNum return &workspaceNums, nil } func GetWorkspacePieNums2(ctx context.Context, enterpriseID int64) (*http_model.WorkspacePieNums2, error) { var workspaceNums http_model.WorkspacePieNums2 var SketchPendingNum, AccSelecting, ShipmentPendingNum int64 db := GetReadDB(ctx) var sketchProjectIDs []int64 db = db.Model(gorm_model.ProjectInfo{}).Select("project_id").Where("enterprise_id = ? AND project_status = 9", enterpriseID).Find(&sketchProjectIDs) db5 := GetReadDB(ctx) db5.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("project_id IN ? AND task_stage = 10", sketchProjectIDs).Count(&SketchPendingNum) fmt.Println("SketchPendingNum:", SketchPendingNum) var RecruitingProjectIDs []int64 db1 := GetReadDB(ctx) db1 = db1.Model(gorm_model.ProjectInfo{}).Select("project_id").Where("enterprise_id = ? AND project_status = 4", enterpriseID).Find(&RecruitingProjectIDs) db4 := GetReadDB(ctx) db4.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id IN ? AND task_status = 1", RecruitingProjectIDs).Count(&AccSelecting) db2 := GetReadDB(ctx) var LogisticProjectIDs []int64 db2 = db2.Model(gorm_model.ProjectInfo{}).Select("project_id").Where("enterprise_id = ? AND project_status = 9", enterpriseID).Find(&LogisticProjectIDs) db3 := GetReadDB(ctx) db3.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id IN ? AND task_stage = 4", LogisticProjectIDs).Count(&ShipmentPendingNum) workspaceNums.SketchPendingNum = SketchPendingNum workspaceNums.AccSelecting = AccSelecting workspaceNums.ShipmentPendingNum = ShipmentPendingNum return &workspaceNums, nil } func GetWorkspaceDDLproject(ctx context.Context, enterpriseID int64) (*http_model.WorkspaceDDLprojectdata, error) { var projectInfos []gorm_model.ProjectInfo //DDLproject := http_model.WorkspaceDDLprojectdata{} db := GetReadDB(ctx) ddl := conv.MustString(time.Now())[0:10] + "%" err := db.Model(gorm_model.ProjectInfo{}).Where("enterprise_id = ? AND project_status = 4 AND recruit_ddl like ?", enterpriseID, ddl). Or("enterprise_id = ? AND project_status = 6 AND auto_fail_at like ?", enterpriseID, ddl).Find(&projectInfos).Error if err != nil { logrus.WithContext(ctx).Errorf("[Project db] Update ProjectInfo error,err:%+v", err) return nil, err } wsDDLprojectData := http_model.WorkspaceDDLprojectdata{} wsDDLprojectData.Total = conv.MustString(len(projectInfos)) for _, projectInfo := range projectInfos { DDLProjectPreview := new(http_model.DDLProjectPreview) DDLProjectPreview.ProjectId = conv.MustString(projectInfo.ProjectID) DDLProjectPreview.ProjectForm = conv.MustString(projectInfo.ProjectForm) DDLProjectPreview.ProjectName = projectInfo.ProjectName DDLProjectPreview.ProjectStatus = conv.MustString(projectInfo.ProjectStatus) DDLProjectPreview.ProjectPlatform = conv.MustString(projectInfo.ProjectPlatform) DDLProjectPreview.ProjectContentType = conv.MustString(projectInfo.ContentType) DDLProjectPreview.RecruitDDL = conv.MustString(projectInfo.RecruitDdl)[0:19] if projectInfo.AutoFailAt != nil { DDLProjectPreview.AutoFailAt = conv.MustString(projectInfo.AutoFailAt)[0:19] } DDLProjectPreview.RecruitNum = conv.MustString(projectInfo.RecruitNum) wsDDLprojectData.DDLProjectPreview = append(wsDDLprojectData.DDLProjectPreview, DDLProjectPreview) } fmt.Printf("GGGGGGGGGG %+v \n", len(projectInfos)) return &wsDDLprojectData, nil }