package approval import ( "context" "encoding/json" "errors" "fmt" account2 "github.com/fonchain_enterprise/fonchain-main/api/account" "github.com/fonchain_enterprise/fonchain-main/api/artist" "github.com/fonchain_enterprise/fonchain-main/api/artwork_third_party" department2 "github.com/fonchain_enterprise/fonchain-main/api/department" "github.com/fonchain_enterprise/fonchain-main/api/paybill" "github.com/fonchain_enterprise/fonchain-main/api/position" "github.com/fonchain_enterprise/fonchain-main/pkg/cache" "github.com/fonchain_enterprise/fonchain-main/pkg/common" "github.com/fonchain_enterprise/fonchain-main/pkg/config" "github.com/fonchain_enterprise/fonchain-main/pkg/model/login" "github.com/fonchain_enterprise/fonchain-main/pkg/model/oa_model" "github.com/fonchain_enterprise/fonchain-main/pkg/model/vo" "github.com/fonchain_enterprise/fonchain-main/pkg/serializer" "github.com/fonchain_enterprise/fonchain-main/pkg/service/account" model2 "github.com/fonchain_enterprise/fonchain-main/pkg/service/approval/model" "github.com/fonchain_enterprise/fonchain-main/pkg/service/auth/department" "github.com/fonchain_enterprise/fonchain-main/pkg/service/es_service/approval/logic" "github.com/fonchain_enterprise/utils/utils" "github.com/jinzhu/copier" "go.uber.org/zap" "google.golang.org/protobuf/types/known/wrapperspb" "strconv" "strings" "time" "dubbo.apache.org/dubbo-go/v3/common/logger" api "github.com/fonchain_enterprise/fonchain-main/api/approval" artShow "github.com/fonchain_enterprise/fonchain-main/api/artShow" "github.com/fonchain_enterprise/fonchain-main/api/artwork_query" "github.com/fonchain_enterprise/fonchain-main/api/rule" "github.com/fonchain_enterprise/fonchain-main/pkg/e" "github.com/fonchain_enterprise/fonchain-main/pkg/model" "github.com/fonchain_enterprise/fonchain-main/pkg/service" "github.com/gin-gonic/gin" "github.com/gin-gonic/gin/binding" ) const ( TypeContent = "content" TypeWork = "work" TypeExhibition = "exhibition" TypeShow = "show" TypeBundle = "bundle" TypeBundlePayPrice = "bundlePayPrice" TypeArtExhibitionReward = "artExhibitionReward" TypeStaffSupply = "staffSupply" TypeShowUpdate = "showUpdate" ) func Create(c *gin.Context) { var req api.CreateRequest if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { service.Error(c, e.Error, err) return } userInfo := login.GetUserInfoFromC(c) // TODO 创建审批 防止重复提交 lockKey := fmt.Sprintf("create_approval_%v_%v", userInfo.ID, req.Type) reply := cache.RedisClient.SetNX(lockKey, 0, 3*time.Second) if !reply.Val() { service.Error(c, e.Error, nil, e.ErrorCreateApproval) return } //提交人 req.SubmitterName = userInfo.NickName req.SubmitterID = userInfo.ID fmt.Println("____________________ 打印 请求参数 createRequest 1 ________________________") fmt.Printf("req 1 : %+v\n", req) fmt.Println("____________________ 打印 请求参数 createRequest 1 ________________________") if req.Type == oa_model.TypeDayOff { if req.ApprovalOA.Leave.Hours < 1 { service.Error(c, e.Error, errors.New(e.ErrDayoffNotLessOneHour)) return } } if req.Type == oa_model.TypeMakeUp { err := CheckMakeUpApplyApproval(&req, userInfo) if err != nil { service.Error(c, e.Error, err) return } } if req.Type == oa_model.TypeOverTime { err := CheckOverTimeApplyApproval(&req, userInfo) if err != nil { service.Error(c, e.Error, err) return } } if req.Type == oa_model.TypeOutWork { err := CheckLeaveTime(&req, userInfo) if err != nil { service.Error(c, e.Error, err) return } err = CheckOutWorkTime(&req) if err != nil { service.Error(c, e.Error, err) return } } if oa_model.LeaveApplyMap[req.Type] != "" { err := CheckLeaveTime(&req, userInfo) if err != nil { service.Error(c, e.Error, err) return } if oa_model.LeaveApplyMap[req.Type] != "" && req.Type != oa_model.TypeOverTime && req.Type != oa_model.TypeLeave { err := CheckLeaveApproval(&req, userInfo) if err != nil { service.Error(c, e.Error, err) return } } } if oa_model.LeaveBalanceApplyMap[req.Type] != "" { err := CheckLeaveApply(&req, userInfo) if err != nil { service.Error(c, e.Error, err) return } } if strings.Contains(req.Type, "employ") { if req.Employ.ResumeID == "" { service.Error(c, e.Error, errors.New(e.ErrorResumeID)) return } resumeID, _ := strconv.ParseInt(req.Employ.ResumeID, 10, 64) err := resumeHireJudge(userInfo, resumeID) if err != nil { service.Error(c, e.Error, err) return } } if oa_model.LeaveBalanceApplyMap[req.Type] != "" { err := CheckLeaveApply(&req, userInfo) if err != nil { service.Error(c, e.Error, err) return } } req.ApprovalUsers, req.IsLeader = DepartmentBosses(c, req.DepartmentID, req.SubmitterID) if userInfo.DepartmentName == "管理部" || userInfo.DepartmentName == "人事行政部" { req.IsLeader = true } // start 针对 艺邑 特殊处理 且 只有 oa 申请才是 departmentName := "" if len(userInfo.PositionUsers) == 1 { for i := 0; i < len(userInfo.PositionUsers); i++ { if userInfo.PositionUsers[i].DepartmentName == "艺邑" { departmentName = "艺邑" } } } else if len(userInfo.PositionUsers) > 1 { for i := 0; i < len(userInfo.PositionUsers); i++ { if userInfo.PositionUsers[i].DepartmentId == uint64(req.DepartmentID) && userInfo.PositionUsers[i].DepartmentName == "艺邑" { departmentName = "艺邑" } } } if departmentName == "艺邑" && (oa_model.LeaveApplyMap[req.Type] != "" || oa_model.LeaveBalanceApplyMap[req.Type] != "" || req.Type == oa_model.TypeOutWork || req.Type == oa_model.TypeTurnover || req.Type == oa_model.TypeMakeUp) { req.ApprovalUsers = nil if req.SubmitterName == "董辰琦" { req.IsLeader = true } req.Domain = "out" } // end fmt.Println("____________________ 打印 请求参数 createRequest 2 ________________________") fmt.Printf("req 2 : %+v\n", req) fmt.Println("____________________ 打印 请求参数 createRequest 2 ________________________") res, err := service.ApprovalProvider.Create(c, &req) if err != nil { service.Error(c, e.Error, err) return } //此处同步到画展包的数据 if req.Type == "exhibition" { applyId, err := synToArtShow(c, &req, res) if err != nil { service.Error(c, e.Error, err) return } upReq := &api.UpdateEhApplyIDRequest{ ApplyId: applyId, ApprovalID: res.ID, } _, upErr := service.ApprovalProvider.UpdateExhibitionApplyID(c, upReq) if upErr != nil { service.Error(c, e.Error, upErr) return } } // 同步 oa 审批到 oa if e.TypeMap[req.Type] == "oa" { fmt.Println("同步 oa系统 ") // 查询 审批状态已经 更新的 审批信息 createReq := api.DetailRequest{ID: res.ID} createDetail, detailErr := service.ApprovalProvider.Detail(c, &createReq) if detailErr != nil { service.Error(c, e.Error, detailErr) return } oaRes, err := SyncApprovalToOA(createDetail) if err != nil { service.Error(c, e.Error, err) return } fmt.Println("更新 oa系统 UUID ") // 获取到 OA审批的 UUID 更新 approvalOA 中的 UUID updateUUID := &api.UpdateApprovalOAUUIDReq{ UUID: oaRes.ID, // OA 返回 ApplyType: req.Type, ApprovalID: res.ID, // approval 返回 } _, updateUUIDErr := service.ApprovalProvider.UpdateApprovalOAUUID(context.Background(), updateUUID) if updateUUIDErr != nil { service.Error(c, e.Error, updateUUIDErr) return } } // 人才招聘 if strings.Contains(req.Type, "staffSupply") { err = createPostApprove(c, userInfo, res, req.DepartmentID) if err != nil { service.Error(c, e.Error, err) return } } if strings.Contains(req.Type, "employ") { err = createOfferApprove(c, userInfo, res, req.DepartmentID) if err != nil { service.Error(c, e.Error, err) return } } service.Success(c, res) } // DepartmentBosses 获取部门主管列表 func DepartmentBosses(c *gin.Context, departmentID int64, submitterID uint64) ([]*api.ApprovalUser, bool) { var approvalUsers []*api.ApprovalUser var departmentIds []uint64 var isLeader bool isLeader = false if departmentID == 0 { return approvalUsers, isLeader } departmentIds = append(departmentIds, uint64(departmentID)) if len(departmentIds) <= 0 { return approvalUsers, isLeader } req := rule.FindByUrlRequest{ Url: e.DepartmentKey, DepartmentIds: departmentIds, } //fmt.Println("=============================== FindByUrlRequest ==================================") //fmt.Printf("req : %+v\n", req) res, err := service.RuleProvider.FindUsersByUrl(c, &req) if err == nil && len(res.List) > 0 { fmt.Println("================================耿阳接口获取到的直属审批人") fmt.Println(res.List) for _, tt := range res.List { temp := &api.ApprovalUser{ ID: tt.UserId, Name: tt.UserName, } //fmt.Println("=============================== FindByUrlResponse ==================================") //fmt.Printf("temp : %+v\n", temp) approvalUsers = append(approvalUsers, temp) } for _, tt := range res.List { if tt.UserId == submitterID { isLeader = true } } } fmt.Println("================================获取到的直属审批人") fmt.Println(approvalUsers) return approvalUsers, isLeader } func DepartmentBossesV3(c *gin.Context, domain string, departmentID int64, submitterID uint64) ([]*api.ApprovalUser, bool) { var approvalUsers []*api.ApprovalUser var departmentIds []uint64 var isLeader bool isLeader = false if departmentID == 0 { return approvalUsers, isLeader } departmentIds = append(departmentIds, uint64(departmentID)) if len(departmentIds) <= 0 { return approvalUsers, isLeader } req := &department2.MyDirectLeadersRequest{ UserId: uint32(submitterID), DepartmentId: uint32(departmentID), Domain: domain, } res, err := service.DepartmentProvider.MyDirectLeaders(c, req) if err != nil { return nil, false } if err == nil && len(res.List) > 0 { fmt.Println("==========================获取上级新接口返回的数据") fmt.Println(res.List) for _, tt := range res.List { temp := &api.ApprovalUser{ ID: uint64(tt.UserId), Name: tt.UserName, } approvalUsers = append(approvalUsers, temp) } fmt.Println(req) boolean, err := service.DepartmentProvider.UserIsLeader(c, req) if err != nil { fmt.Println("==========================当前人是否是主管报错") fmt.Println(err.Error()) return nil, false } isLeader = boolean.IsLeader } return approvalUsers, isLeader } func DepartmentBossesV1(c *gin.Context, positionUsers []*rule.PositionUser) []*api.ApprovalUser { var approvalUsers []*api.ApprovalUser var departmentIds []uint64 departmentIdsMap := make(map[uint64]struct{}) if len(positionUsers) == 0 { return approvalUsers } for _, tt := range positionUsers { //我如果是boss,则过滤掉 if isHave := IsHaveBossAuth(c, tt.UserId, tt.DepartmentId); isHave == true { continue } if _, ok := departmentIdsMap[tt.DepartmentId]; ok == false { departmentIdsMap[tt.DepartmentId] = struct{}{} departmentIds = append(departmentIds, tt.DepartmentId) } } if len(departmentIds) <= 0 { return approvalUsers } req := rule.FindByUrlRequest{ Url: e.DepartmentKey, DepartmentIds: departmentIds, } res, err := service.RuleProvider.FindUsersByUrl(c, &req) if err == nil && len(res.List) > 0 { for _, tt := range res.List { temp := &api.ApprovalUser{ ID: tt.UserId, Name: tt.UserName, } approvalUsers = append(approvalUsers, temp) } } return approvalUsers } func IsHaveBossAuth(c *gin.Context, ID uint64, DepartmentID uint64) bool { isLeader := false req := position.DoIHavaAuthRequest{ UserId: ID, Url: e.DepartmentKey, DepartmentID: DepartmentID, } res, err := service.PositionProvider.DoIHavaAuth(c, &req) fmt.Println("查看返回", res) if err == nil && res.Hava == true { isLeader = true } return isLeader } // 创建附带 func synToArtShow(c *gin.Context, req *api.CreateRequest, res *api.ApprovalResponse) (string, error) { now := time.Now() datestr := now.Format("2006-01-02 15:04:05") showRels := make([]*artShow.ShowRel, 0) showApplyReq := &artShow.SaveApplyReq{ Applicant: req.SubmitterName, ApplicantID: strconv.FormatUint(req.SubmitterID, 10), Num: int32(len(req.Exhibition.ApprovalExhibitions)), ApplyTime: datestr, Status: 1, Remark: "", } for index, tt := range req.Exhibition.ApprovalExhibitions { temp := &artShow.ShowRel{ ShowUID: tt.PackageID, Index: int32((index + 1)), Address: tt.Address, ShowTime: tt.ShowDate, } showRels = append(showRels, temp) } showApplyReq.Rel = showRels showApplyRes, err := service.GrpcArtShowImpl.CreateApply(c, showApplyReq) if err != nil { return "", err } return showApplyRes.ApplyUID, nil } func passSynToArtShowNotLogin(c *gin.Context, ID uint64, UserId uint64) (string, error) { var detailReq api.DetailRequest detailReq.UserId = UserId detailReq.ID = ID detailRes, err3 := service.ApprovalProvider.Detail(c, &detailReq) if err3 != nil { return "", err3 } if detailRes.Type != "exhibition" { return "", nil } if detailRes.Status != 2 { // 不等于2 表示 此审批 未通过 return "", nil } // 审批 通过 通知 画展包微服务 记录 req := detailRes now := time.Now() datestr := now.Format("2006-01-02 15:04:05") showRels := make([]*artShow.ShowRel, 0) showUIDs := make([]string, 0) var UpdateArtShowAgentList []*artShow.ArtShowAgent showApplyReq := &artShow.SaveApplyReq{ ApplyUID: req.Exhibition.ApplyID, Applicant: req.SubmitterName, ApplicantID: strconv.FormatUint(req.SubmitterID, 10), Num: int32(len(req.Exhibition.ApprovalExhibitions)), ApplyTime: datestr, Status: int32(req.Status), } for index, tt := range req.Exhibition.ApprovalExhibitions { temp := &artShow.ShowRel{ ShowUID: tt.PackageID, Index: int32((index + 1)), Address: tt.Address, ShowTime: tt.ShowDate, ApplyUID: req.Exhibition.ApplyID, } UpdateArtShowAgentList = append(UpdateArtShowAgentList, &artShow.ArtShowAgent{ ShowUID: tt.PackageID, Agent: tt.ArtExhibitionDetail.Agent, }) showRels = append(showRels, temp) showUIDs = append(showUIDs, tt.PackageID) } showDetail := new(artShow.ShowDetailReq) showDetail.ShowUID = showUIDs showDetailRes, err := service.GrpcArtShowImpl.ShowDetail(c, showDetail) if err != nil { return "", errors.New(e.ErrorQueryArtShowInfo) } //使用邀请函中的数据更新出行信息 defer func() { var showUids []string for _, v := range showDetailRes.Data { showUids = append(showUids, v.ShowUID) } fmt.Println("EntertainmentSetDefaultValue start---showUids:", showUids) if len(showUids) > 0 { go func() { err = EntertainmentSetDefaultValue(showUids...) fmt.Println("EntertainmentSetDefaultValue end---err:", err) if err != nil { zap.L().Error("更新招待数据中的出行信息失败", zap.Error(err)) } }() } }() policys := make([]*artShow.PricePolicy, 0) for i := 0; i < len(showDetailRes.Data); i++ { if showDetailRes.Data[i].HasFormula == e.HasFormula { policy := new(artShow.PricePolicy) policy.ShowUID = showDetailRes.Data[i].ShowUID policy.ArtistUID = showDetailRes.Data[i].ArtistUID policy.ArtistName = showDetailRes.Data[i].ArtistName policy.Factor = new(artShow.PricePolicyFactor) honorCountReq := new(artist.HonorCountReq) honorCountReq.ArtistUid = showDetailRes.Data[i].ArtistUID honorCountResp, err := service.GrpcArtistImpl.HonorCount(c, honorCountReq) if err != nil { return "", errors.New(e.ErrorQueryHonorInfo) } //policy.Factor.PaintingCount = showDetailRes.Data[i].ArtworkNum //policy.Factor.AverageCanvasSize = float32(math.Round(float64(showDetailRes.Data[i].Ruler / showDetailRes.Data[i].ArtworkNum))) //policy.Factor.TaifengExhibitionCount = float32(honorCountResp.CaaJoinYear) policy.Factor.MeixieYears = float32(honorCountResp.CaaJoinYear) policy.Factor.ExternalExhibitionCount = float32(honorCountResp.Exhibition) policy.Factor.ArtistProfessionalismIndex = float32(honorCountResp.Professionalism) policy.Factor.ArtistCollectibilityIndex = float32(honorCountResp.Collectible) policy.Factor.ArtistExperienceEducationIndex = float32(honorCountResp.Education) policy.Factor.ArtistInfluencePopularityIndex = float32(honorCountResp.Influence) policy.Factor.StudyAbroadExperienceCount = float32(honorCountResp.StudyTourCount) policy.Factor.AwardExperienceCount = float32(honorCountResp.AwardCount) policy.Factor.NationalTitleCount = float32(honorCountResp.NationTitleCount) policy.Factor.ProvincialTitleCount = float32(honorCountResp.ProvinceTitleCount) policy.Factor.OtherTitleCount = float32(honorCountResp.OtherTitleCount) policy.Factor.PublishedPaintingCount = float32(honorCountResp.ArtworkPublishCount) policy.Factor.ExternalExhibitionCount = float32(honorCountResp.OutsidePublishCount) policy.Factor.AcademicPublicationCount = float32(honorCountResp.AcademicPublishCount) policy.Factor.ThirdPartyCuratorComment = float32(honorCountResp.ThirdCommentCount) policys = append(policys, policy) fmt.Println("================================= policy --------------------------------------") fmt.Printf("policy %+v\n", policy) fmt.Println("================================= policy --------------------------------------") } } showApplyReq.Rel = showRels showApplyReq.PricePolicy = policys fmt.Println("================================= showApplyReq --------------------------------------") fmt.Printf("showApplyReq %+v\n", showApplyReq) fmt.Println("================================= showApplyReq --------------------------------------") showApplyRes, err := service.GrpcArtShowImpl.UpdateApply(c, showApplyReq) if err != nil { return "", err } fmt.Println("画展经纪人请求", UpdateArtShowAgentList) updateArtShowAgentRes, err := service.GrpcArtShowImpl.UpdateArtShowAgent(c, &artShow.UpdateArtShowAgentReq{Data: UpdateArtShowAgentList}) fmt.Println("画展经纪人请求后", updateArtShowAgentRes, err) if err != nil { return "", err } // 添加 画作销售站点 err = AddSaleAddress(detailRes) if err != nil { return "", err } if err != nil { return "", err } // 通过 rabbitmq 发送 到 画家系统 用于 确认 是否 参加画展 //artistUIDs := make([]string, 0) // //for i := 0; i < len(detailRes.Exhibition.ApprovalExhibitions); i++ { // artistUIDs = append(artistUIDs, detailRes.Exhibition.ApprovalExhibitions[i].ArtExhibitionDetail.ArtistUID) //} //bt, err := json.Marshal(&artistUIDs) //fmt.Println("========================== send =====================") //fmt.Printf("send msg to mq : %+v", artistUIDs) //fmt.Println("========================== send =====================") //fmt.Println() //mq.SendToArtShowPass(bt) return showApplyRes.ApplyUID, nil } func passSynToArtShow(c *gin.Context, ID uint64) (string, error) { var detailReq api.DetailRequest userInfo := login.GetUserInfoFromC(c) detailReq.UserId = userInfo.ID detailReq.ID = ID fmt.Println("passSynToArtShow---1") detailRes, err3 := service.ApprovalProvider.Detail(c, &detailReq) if err3 != nil { return "", err3 } fmt.Println("passSynToArtShow---2") if detailRes.Type != "exhibition" { return "", nil } fmt.Println("passSynToArtShow---3") if detailRes.Status != 2 { // 2 表示 此审批 未通过 return "", nil } fmt.Println("passSynToArtShow---4") // 审批 通过 通知 画展包微服务 记录 req := detailRes now := time.Now() datestr := now.Format("2006-01-02 15:04:05") showRels := make([]*artShow.ShowRel, 0) showUIDs := make([]string, 0) var UpdateArtShowAgentList []*artShow.ArtShowAgent fmt.Println("passSynToArtShow---5") showApplyReq := &artShow.SaveApplyReq{ ApplyUID: req.Exhibition.ApplyID, Applicant: req.SubmitterName, ApplicantID: strconv.FormatUint(req.SubmitterID, 10), Num: int32(len(req.Exhibition.ApprovalExhibitions)), ApplyTime: datestr, Status: int32(req.Status), } showApplyReq.PricePolicy = make([]*artShow.PricePolicy, 0) fmt.Println("passSynToArtShow---6") for index, tt := range req.Exhibition.ApprovalExhibitions { temp := &artShow.ShowRel{ ShowUID: tt.PackageID, Index: int32((index + 1)), Address: tt.Address, ShowTime: tt.ShowDate, ApplyUID: req.Exhibition.ApplyID, } UpdateArtShowAgentList = append(UpdateArtShowAgentList, &artShow.ArtShowAgent{ ShowUID: tt.PackageID, Agent: tt.ArtExhibitionDetail.Agent, }) showRels = append(showRels, temp) showUIDs = append(showUIDs, tt.PackageID) } fmt.Println("passSynToArtShow---7") showDetail := new(artShow.ShowDetailReq) showDetail.ShowUID = showUIDs showDetailRes, err := service.GrpcArtShowImpl.ShowDetail(c, showDetail) if err != nil { return "", errors.New(e.ErrorQueryArtShowInfo) } //使用邀请函中的数据更新出行信息 defer func() { fmt.Println("passSynToArtShow---8") var showUids []string for _, v := range showDetailRes.Data { showUids = append(showUids, v.ShowUID) } fmt.Println("EntertainmentSetDefaultValue start---showUids:", showUids) if len(showUids) > 0 { go func() { err = EntertainmentSetDefaultValue(showUids...) fmt.Println("EntertainmentSetDefaultValue end---err:", err) if err != nil { zap.L().Error("更新招待数据中的出行信息失败", zap.Error(err)) } }() } }() policys := make([]*artShow.PricePolicy, 0) for i := 0; i < len(showDetailRes.Data); i++ { if showDetailRes.Data[i].HasFormula == e.HasFormula { policy := new(artShow.PricePolicy) policy.ShowUID = showDetailRes.Data[i].ShowUID policy.ArtistUID = showDetailRes.Data[i].ArtistUID policy.ArtistName = showDetailRes.Data[i].ArtistName policy.Factor = new(artShow.PricePolicyFactor) honorCountReq := new(artist.HonorCountReq) honorCountReq.ArtistUid = showDetailRes.Data[i].ArtistUID honorCountResp, err := service.GrpcArtistImpl.HonorCount(c, honorCountReq) if err != nil { return "", errors.New(e.ErrorQueryHonorInfo) } //policy.Factor.PaintingCount = showDetailRes.Data[i].ArtworkNum //policy.Factor.AverageCanvasSize = float32(math.Round(float64(showDetailRes.Data[i].Ruler / showDetailRes.Data[i].ArtworkNum))) //policy.Factor.TaifengExhibitionCount = float32(honorCountResp.CaaJoinYear) policy.Factor.MeixieYears = float32(honorCountResp.CaaJoinYear) policy.Factor.ExternalExhibitionCount = float32(honorCountResp.Exhibition) policy.Factor.ArtistProfessionalismIndex = float32(honorCountResp.Professionalism) policy.Factor.ArtistCollectibilityIndex = float32(honorCountResp.Collectible) policy.Factor.ArtistExperienceEducationIndex = float32(honorCountResp.Education) policy.Factor.ArtistInfluencePopularityIndex = float32(honorCountResp.Influence) policy.Factor.StudyAbroadExperienceCount = float32(honorCountResp.StudyTourCount) policy.Factor.AwardExperienceCount = float32(honorCountResp.AwardCount) policy.Factor.NationalTitleCount = float32(honorCountResp.NationTitleCount) policy.Factor.ProvincialTitleCount = float32(honorCountResp.ProvinceTitleCount) policy.Factor.OtherTitleCount = float32(honorCountResp.OtherTitleCount) policy.Factor.PublishedPaintingCount = float32(honorCountResp.ArtworkPublishCount) policy.Factor.ExternalExhibitionCount = float32(honorCountResp.OutsidePublishCount) policy.Factor.AcademicPublicationCount = float32(honorCountResp.AcademicPublishCount) policy.Factor.ThirdPartyCuratorComment = float32(honorCountResp.ThirdCommentCount) policys = append(policys, policy) fmt.Println("================================= policy --------------------------------------") fmt.Printf("policy %+v\n", policy) fmt.Println("================================= policy --------------------------------------") } } showApplyReq.Rel = showRels showApplyReq.PricePolicy = policys fmt.Println("================================= showApplyReq --------------------------------------") fmt.Printf("showApplyReq %+v\n", showApplyReq) fmt.Println("================================= showApplyReq --------------------------------------") showApplyRes, err := service.GrpcArtShowImpl.UpdateApply(c, showApplyReq) if err != nil { return "", err } fmt.Println("画展经纪人请求", UpdateArtShowAgentList) updateArtShowAgentRes, err := service.GrpcArtShowImpl.UpdateArtShowAgent(c, &artShow.UpdateArtShowAgentReq{Data: UpdateArtShowAgentList}) fmt.Println("画展经纪人请求后", updateArtShowAgentRes, err) if err != nil { return "", err } // 添加 画作销售站点 err = AddSaleAddress(detailRes) if err != nil { return "", err } if err != nil { return "", err } // 通过 rabbitmq 发送 到 画家系统 用于 确认 是否 参加画展 //artistUIDs := make([]string, 0) // //for i := 0; i < len(detailRes.Exhibition.ApprovalExhibitions); i++ { // artistUIDs = append(artistUIDs, detailRes.Exhibition.ApprovalExhibitions[i].ArtExhibitionDetail.ArtistUID) //} // //bt, err := json.Marshal(&artistUIDs) //fmt.Println("========================== send =====================") //fmt.Printf("send msg to mq : %+v", artistUIDs) //fmt.Println("========================== send =====================") //fmt.Println() //mq.SendToArtShowPass(bt) return showApplyRes.ApplyUID, nil } func UsedNumByUser(c *gin.Context) { userInfo := login.GetUserInfoFromC(c) levelReq := api.UsedNumByUserRequest{ SubmitterID: userInfo.ID, } res, err := service.ApprovalProvider.UsedNumByUser(c, &levelReq) if err != nil { service.Error(c, e.Error, err) return } service.Success(c, res) } // SetStatusEx ID Status UserId func SetStatusEx(c *gin.Context) { var req api.StatusRequest if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { service.Error(c, e.Error, err) return } infoReq := account2.InfoRequest{ID: req.UserId} infoRes, err := service.AccountProvider.Info(context.Background(), &infoReq) if err != nil { service.Error(c, e.Error, errors.New(e.GetMsg(e.ErrorGetUserInfo))) return } if infoRes.Info.ID == 0 || infoRes.Info.NickName == "" || infoRes.Info.Domain == "" { service.Error(c, e.Error, errors.New(e.GetMsg(e.ErrorGetUserInfo))) return } userInfo := login.Info{ ID: req.UserId, NickName: infoRes.Info.NickName, } levelReq := api.NowLevelByInfoRequest{ ApprovalID: req.ID, } levelRes, err := service.ApprovalProvider.NowLevelByInfo(c, &levelReq) if err != nil { service.Error(c, e.Error, err) return } if req.UserId != levelRes.UserID { service.Error(c, e.Error, errors.New("本次审批人出现错误")) return } req.WorkFlowId = levelRes.ID beforeApproval := QueryApprovalSetStatusBefore(req.ID) res, err := service.ApprovalProvider.SetStatus(c, &req) if err != nil { service.Error(c, e.Error, err) return } detailReq := api.DetailRequest{ID: req.ID} detail, err := service.ApprovalProvider.Detail(c, &detailReq) if err != nil { service.Error(c, e.Error, err) return } if detail.TypeName == "任命审批" { StoreBaiduChainApprovalFile(req.ID) } // 审批成功查询用户部门的信息,提交画作服修改画作仓库状态 if detail.TypeName == "画作申请审批" { var ids []int32 for _, tt := range detail.Work.ApprovalWorks { ids = append(ids, int32(tt.ArtworkID)) } fmt.Println("请求画作申请审批", ids) if len(ids) > 0 { err = submitArtwork(req.UserId, ids) if err != nil { service.Error(c, e.Error, err) return } } } // approval 审批状态 同步到 oa 审批 if e.TypeMap[detail.Type] == "oa" { // 查询 审批状态已经 更新的 审批信息 updatedReq := api.DetailRequest{ID: req.ID} updatedDetail, detailErr := service.ApprovalProvider.Detail(c, &updatedReq) if detailErr != nil { service.Error(c, e.Error, detailErr) return } if req.LeaveBalance != 0 && updatedDetail.ApprovalOA.LeaveApply != nil { //leaveBalance, _ := strconv.ParseFloat(req.LeaveBalance, 10) updatedDetail.ApprovalOA.LeaveApply.LeaveBalance = req.LeaveBalance } _, updateErr := UpdateApprovalStatusToOAStatus(updatedDetail) if updateErr != nil { service.Error(c, e.Error, updateErr) return } } if _, err := passSynToArtShowNotLogin(c, req.ID, req.UserId); err != nil { service.Error(c, e.Error, err) return } if _, err := passSynToShowRelUpdateNotLogin(c, req.ID, req.UserId); err != nil { service.Error(c, e.Error, err) return } if detail.Type == TypeExhibition && beforeApproval.Status == e.ApprovalWorkStatusDoing && req.Status == e.ApprovalWorkStatusFail { //取消通知画展包 err = CancelArtShowApply(detail) if err != nil { service.Error(c, e.Error, err) return } } _ = PassUpdate(c, req.ID) if detail.TypeName == "人员增补申请" { //userInfo := login.GetUserInfoFromC(c) if req.Status == e.ApprovalWorkStatusFail { err = rejectPostApprove(userInfo, req.ID, req.Reply) if err != nil { service.Error(c, e.Error, err) return } } else if req.Status == e.ApprovalWorkStatusOk { err = passPostApprove(userInfo, req.ID) if err != nil { service.Error(c, e.Error, err) return } } } if strings.Contains(detail.Type, "employ") { err := offerApproveSetStatusEnter(c, userInfo, &req, detail) if err != nil { service.Error(c, e.Error, err) return } } //if detail.Type == "employ" { // //userInfo := login.GetUserInfoFromC(c) // if req.Status == e.ApprovalWorkStatusFail { // err = rejectOfferApprove(userInfo, req.ID, req.Reply) // if err != nil { // service.Error(c, e.Error, err) // return // } // } else if req.Status == e.ApprovalWorkStatusOk { // err = passOfferApproveNotFinish(userInfo, req.ID) // if err != nil { // service.Error(c, e.Error, err) // return // } // } //if detail.Status == e.ApprovalWorkStatusOk { // // registerUser := union.User{ // NickName: detail.Employ.Name, // TelNum: detail.Employ.Mobile, // EnterDate: detail.Employ.EntryTime, // PositionUsers: nil, // JobNum: detail.Employ.EmployeeNo, // Password: InitPassword, // } // registerUser.PositionUsers = make([]*position.PositionUser, 0) // registerUser.PositionUsers = append(registerUser.PositionUsers, &position.PositionUser{PositionName: detail.Employ.Post, DepartmentName: detail.Employ.BelongDepartment}) // err, _ = account.UserRegisters(c, registerUser) // if err != nil { // service.Error(c, e.Error, err) // return // } //} //} if detail.Type == "checkIn" && detail.Status == e.ApprovalWorkStatusOk { err = passSendInfoToSiteSignIn(detail.CheckIn) if err != nil { service.Error(c, e.Error, err) return } } service.Success(c, res) } func SetStatus(c *gin.Context) { var req vo.SetStatus if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { service.Error(c, e.Error, err) return } userInfo := login.GetUserInfoFromC(c) levelReq := api.NowLevelByInfoRequest{ ApprovalID: req.ID, } levelRes, err := service.ApprovalProvider.NowLevelByInfo(c, &levelReq) if err != nil { service.Error(c, e.Error, err) return } if userInfo.ID != levelRes.UserID { service.Error(c, e.Error, errors.New("本次审批人出现错误")) return } req.WorkFlowId = levelRes.ID fmt.Println("============== 打印 StatusRequest内容 ========== 开始 =========") fmt.Printf("StatusRequest is : %+v \n", req) fmt.Println("============== 打印 StatusRequest内容 ========== 结束 =========") // 查询 未审批前的审批 beforeApproval := QueryApprovalSetStatusBefore(req.ID) newReq := new(api.StatusRequest) newReq.Status = req.Status newReq.ID = req.ID newReq.WorkFlowId = req.WorkFlowId newReq.LeaveBalance = req.LeaveBalance newReq.Title = req.Title newReq.Reply = req.Reply newReq.Tips = req.Tips res, err := service.ApprovalProvider.SetStatus(c, newReq) if err != nil { service.Error(c, e.Error, err) return } detailReq := api.DetailRequest{ID: req.ID} detail, err := service.ApprovalProvider.Detail(c, &detailReq) if err != nil { service.Error(c, e.Error, err) return } if req.Title == "任命审批" { StoreBaiduChainApprovalFile(req.ID) } // 审批成功查询用户部门的信息,提交画作服修改画作仓库状态 var artworkReq artwork_query.UpdateAwStockStatusRequest if err = c.ShouldBindBodyWith(&artworkReq, binding.JSON); err != nil { service.Error(c, e.Error, err) return } if req.Title == "画作申请审批" { err = submitArtwork(userInfo.ID, artworkReq.ArtworkIds) if err != nil { service.Error(c, e.Error, err) return } } if _, err := passSynToArtShow(c, req.ID); err != nil { service.Error(c, e.Error, err) return } // approval 审批状态 同步到 oa 审批 if e.TypeMap[detail.Type] == "oa" { // 查询 审批状态已经 更新的 审批信息 updatedReq := api.DetailRequest{ID: req.ID} updatedDetail, detailErr := service.ApprovalProvider.Detail(c, &updatedReq) if detailErr != nil { service.Error(c, e.Error, detailErr) return } if req.LeaveBalance != 0 && updatedDetail.ApprovalOA.LeaveApply != nil { //leaveBalance, _ := strconv.ParseFloat(req.LeaveBalance, 10) updatedDetail.ApprovalOA.LeaveApply.LeaveBalance = req.LeaveBalance } _, updateErr := UpdateApprovalStatusToOAStatus(updatedDetail) if updateErr != nil { service.Error(c, e.Error, updateErr) return } } if _, err := passSynToShowRelUpdate(c, req.ID); err != nil { service.Error(c, e.Error, err) return } if detail.Type == TypeExhibition && beforeApproval.Status == e.ApprovalWorkStatusDoing && req.Status == e.ApprovalWorkStatusFail { //取消通知画展包 err = CancelArtShowApply(detail) if err != nil { service.Error(c, e.Error, err) return } } _ = PassUpdate(c, req.ID) if req.Title == "人员增补申请" { if req.Status == e.ApprovalWorkStatusFail { err = rejectPostApprove(userInfo, req.ID, req.Reply) if err != nil { service.Error(c, e.Error, err) return } } else if req.Status == e.ApprovalWorkStatusOk { err = passPostApprove(userInfo, req.ID) if err != nil { service.Error(c, e.Error, err) return } } } if strings.Contains(detail.Type, "employ") { if req.Status == e.ApprovalWorkStatusFail { err = rejectOfferApprove(userInfo, req.ID, req.Reply) if err != nil { service.Error(c, e.Error, err) return } } else if req.Status == e.ApprovalWorkStatusOk { err = passOfferApproveNotFinish(userInfo, req.ID) if err != nil { service.Error(c, e.Error, err) return } } if detail.Status == e.ApprovalWorkStatusOk { /* registerUser := union.User{ NickName: detail.Employ.Name, TelNum: detail.Employ.Mobile, EnterDate: detail.Employ.EntryTime, PositionUsers: nil, JobNum: detail.Employ.EmployeeNo, Password: InitPassword, } registerUser.PositionUsers = make([]*position.PositionUser, 0) registerUser.PositionUsers = append(registerUser.PositionUsers, &position.PositionUser{PositionName: detail.Employ.Post, DepartmentName: detail.Employ.BelongDepartment}) err, _ = account.UserRegisters(c, registerUser) if err != nil { service.Error(c, e.Error, err) return } */ } } if detail.Type == "checkIn" && detail.Status == e.ApprovalWorkStatusOk { err = passSendInfoToSiteSignIn(detail.CheckIn) if err != nil { service.Error(c, e.Error, err) return } } if req.Status == e.ApprovalWorkStatusFail { workReq := api.ListRequest{ ApprovedBossId: userInfo.ID, ApprovalStatus: req.RetStatus, Type: detail.Type, } if workReq.OrderBy == "" { workReq.OrderBy = "desc" } workRes, err := service.ApprovalProvider.MyWork(c, &workReq) if err != nil { service.Error(c, e.Error, err) return } service.Success(c, workRes) return } service.Success(c, res) } // PassUpdate 通过去修改画展信息 func PassUpdate(c *gin.Context, id uint64) error { detailReq := api.DetailRequest{ID: id} detail, err := service.ApprovalProvider.Detail(c, &detailReq) if err != nil { fmt.Println("查询失败", err) return nil } if detail.Status != e.ApprovalWorkStatusOk { return nil } if detail.Exhibition == nil || len(detail.Exhibition.ApprovalExhibitions) <= 0 { fmt.Println("不存在绑定画展包内容") return nil } //是exhibition /* if detail.Type == TypeExhibition { // var UpdateArtworkSaleAddressList []*artShow.ArtworkSaleAddress var UpdateArtShowAgentList []*artShow.ArtShowAgent var artWorks []*artwork_third_party.UpdateAwSaleInfoReq_Info for _, t := range detail.Exhibition.ApprovalExhibitions { for _, tt := range t.Artworks { temp := &artShow.ArtworkSaleAddress{ArtworkPriceUid: tt.ArtworkPriceUID, SaleAddress: tt.SaleAddress} UpdateArtworkSaleAddressList = append(UpdateArtworkSaleAddressList, temp) intNum, err := strconv.ParseInt(tt.SaleAddressID, 10, 32) if err != nil { intNum = 0 } arwTemp := &artwork_third_party.UpdateAwSaleInfoReq_Info{ArtworkUuid: tt.ArtworkUID, SaleAddress: tt.SaleAddress, SaleId: int32(intNum)} artWorks = append(artWorks, arwTemp) } UpdateArtShowAgentList = append(UpdateArtShowAgentList, &artShow.ArtShowAgent{ ShowUID: t.PackageID, Agent: t.ArtExhibitionDetail.Agent, }) } if len(UpdateArtworkSaleAddressList) <= 0 { return nil } //通知画展 UpdateArtworkSaleAddressReq := &artShow.UpdateArtworkSaleAddressReq{Data: UpdateArtworkSaleAddressList} fmt.Println("画展请求", UpdateArtworkSaleAddressReq) UpdateArtworkSaleAddressRes, err := service.GrpcArtShowImpl.UpdateArtworkSaleAddress(c, UpdateArtworkSaleAddressReq) fmt.Println("画展请求后", UpdateArtworkSaleAddressRes, err) fmt.Println("画展经纪人请求", UpdateArtShowAgentList) updateArtShowAgentRes, err := service.GrpcArtShowImpl.UpdateArtShowAgent(c, &artShow.UpdateArtShowAgentReq{Data: UpdateArtShowAgentList}) fmt.Println("画展经纪人请求后", updateArtShowAgentRes, err) //通知画作 saleReq := &artwork_third_party.UpdateAwSaleInfoReq{Data: artWorks} fmt.Println("画作请求", saleReq) saleRes, err := service.GrpcArtworkThirdPartyImpl.UpdateAwSaleInfo(c, saleReq) fmt.Println("画作请求后", saleRes, err) } */ if detail.Type == TypeArtExhibitionReward { //价格 //通知画展 var list []*artShow.ArtworkReward var artWorks []*artwork_third_party.UpdateAwInfoReq_Info for _, t := range detail.Exhibition.ApprovalExhibitions { for _, tt := range t.Artworks { temp := &artShow.ArtworkReward{ArtworkPriceUid: tt.ArtworkPriceUID, Reward: tt.Reward} list = append(list, temp) distFloat, err := strconv.ParseFloat(tt.Reward, 32) if err != nil { distFloat = 0 } arwTemp := &artwork_third_party.UpdateAwInfoReq_Info{ArtworkUuid: tt.ArtworkUID, PriceRun: wrapperspb.Float(float32(distFloat))} artWorks = append(artWorks, arwTemp) } } if len(list) <= 0 { return nil } req := &artShow.UpdateArtworkRewardReq{Data: list} fmt.Println("请求", req) res, err := service.GrpcArtShowImpl.UpdateArtworkReward(c, req) fmt.Println("请求后", res, err) fmt.Println(res, err) //通知画作 //通知画作 saleReq := &artwork_third_party.UpdateAwInfoReq{Data: artWorks} fmt.Println("画作请求", saleReq) saleRes, err := service.GrpcArtworkThirdPartyImpl.UpdateAwInfo(c, saleReq) fmt.Println("画作请求后", saleRes, err) } return nil } func cancelApply(c *gin.Context, detail *api.CreateRequest) (err error) { fmt.Println("取消画展包", detail) if detail.Type != TypeExhibition { return nil } if detail.Exhibition == nil { return nil } if detail.Exhibition.ApplyID == "" { return nil } delReq := artShow.DelApplyReq{ApplyUID: []string{detail.Exhibition.ApplyID}} fmt.Println("取消画展包:req", delReq) r, err := service.GrpcArtShowImpl.DelApply(c, &delReq) fmt.Println("取消画展包:res", r, err) return err } func submitArtwork(adminId uint64, artworkIds []int32) (err error) { uReq := rule.RulesRequest{ AccountID: adminId, } //获取用户信息 posResp, err := service.RuleProvider.UserInfo(context.Background(), &uReq) if err != nil { logger.Errorf("submitArtwork UserInfo err", err) err = errors.New(e.GetMsg(e.ErrorGetUserInfo)) return } if posResp == nil || posResp.PositionUsers == nil { err = errors.New(e.GetMsg(e.ErrorGetDepart)) return } var postName string for _, v := range posResp.PositionUsers { if v.PositionName == model.DepartDigiName { postName = model.DepartDigiName goto SendAwSto } else if v.PositionName == model.DepartAuthName { postName = model.DepartDigiName goto SendAwSto } } SendAwSto: //发送画作状态 awReq := artwork_query.UpdateAwStockStatusRequest{ AdminId: int32(adminId), PostName: postName, ArtworkIds: artworkIds, ActionType: model.AwStockStatusApproval, } _, err = service.GrpcArtworkQueryImpl.UpdateAwStockStatus(context.Background(), &awReq) logger.Errorf("UpdateAwStockStatus err", err) if err != nil { err = errors.New(err.Error()) return } return } func Remove(c *gin.Context) { var req api.RemoveRequest if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { service.Error(c, e.Error, err) return } for i := 0; i < len(req.IDs); i++ { // approval 审批状态 同步到 oa 审批 // 查询 审批状态已经 更新的 审批信息 updatedReq := api.DetailRequest{ID: req.IDs[i]} updatedDetail, detailErr := service.ApprovalProvider.Detail(c, &updatedReq) if detailErr != nil { service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: "获取审批信息失败", Status: e.Failed, }) return } if updatedDetail.ApprovalOA != nil { _, updateErr := DeleteApproval(updatedDetail) if updateErr != nil { service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: "更新OA审批信息失败", Status: e.Failed, }) return } } if updatedDetail.StaffSupply != nil { userInfo := login.GetUserInfoFromC(c) err := rollbackPost(userInfo, updatedDetail.ID) if err != nil { service.Error(c, e.Error, err) return } } if updatedDetail.Employ != nil { userInfo := login.GetUserInfoFromC(c) if updatedDetail.Employ.ResumeID != "" { err := rollbackOffer(userInfo, updatedDetail.ID) if err != nil { service.Error(c, e.Error, err) return } } } deleteApproval := req.IDs[i] // 同步至 es go func() { updateErr := logic.DeleteIndexApprovalDoc(config.ApprovalIndex, deleteApproval) if updateErr != nil { zap.L().Error("同步至 es 失败 更新", zap.Error(updateErr)) return } }() // 年假扣除清零 if strings.Contains(updatedDetail.Type, "turnover") { updateDeductAnnualLeaveZeroClearing(updatedDetail.ApprovalOA.Turnover) } } res, err := service.ApprovalProvider.Remove(c, &req) if err != nil { service.Error(c, e.Error, err) return } service.Success(c, res) } // PrintDetail 打印的信息详情 func PrintDetail(c *gin.Context) { var req api.DetailRequest if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { service.Error(c, e.Error, err) return } userInfo := login.GetUserInfoFromC(c) req.UserId = userInfo.ID res, err := service.ApprovalProvider.Detail(c, &req) if err != nil { service.Error(c, e.Error, err) return } accountInfo, err := account.GetUserInfoById(c, res.SubmitterID, "") if err != nil { service.Error(c, e.Error, err) return } submitterInfo := vo.SubmitterInfo{ Name: accountInfo.NickName, DepartmentName: accountInfo.DepartmentName, TelNum: accountInfo.TelNum, } printerInfo := vo.PrinterInfo{ Name: userInfo.NickName, TelNum: userInfo.TelNum, } var userIds []uint64 var copyUsers []string var approvalUsers []string var content []vo.ContentInfo for _, tt := range res.CopyUsers { userIds = append(userIds, tt.ID) } for _, tt := range res.WorkFlows { userIds = append(userIds, tt.ID) } fmt.Println("1----查看", userIds) departmentUserMap, err := department.GetDepartmentUsersMap(c, userIds) fmt.Println("2----查看", departmentUserMap) if err != nil { service.Error(c, e.Error, err) return } detailReq := api.TypeResponse{ Keyword: res.Type, } detailRes, err := service.ApprovalProvider.DetailType(c, &detailReq) if err != nil { service.Error(c, e.Error, err) return } fmt.Println("2----查看", res) for i, tt := range res.CopyUsers { if _, ok := departmentUserMap[tt.ID]; ok { temp := fmt.Sprintf("第%s抄送人: %s %s", common.TransferNum(i+1), departmentUserMap[tt.ID], tt.Name) copyUsers = append(copyUsers, temp) } else { temp := fmt.Sprintf("第%s抄送人: %s", common.TransferNum(i+1), tt.Name) copyUsers = append(copyUsers, temp) } } //fmt.Println(res.WorkFlows) //fmt.Println(departmentUserMap) for i, tt := range res.WorkFlows { passString := "审批中" greetString := "" if tt.Status == e.ApprovalWorkStatusOk { passString = "通过" greetString = "同意" } else if tt.Status == e.ApprovalWorkStatusFail { passString = "未通过" greetString = "不同意" } if _, ok := departmentUserMap[tt.UserID]; ok { temp := fmt.Sprintf("第%s审批人: %s %s %s %s %s", common.TransferNum(i+1), departmentUserMap[tt.ID], tt.Name, passString, tt.OperatedAt, greetString) approvalUsers = append(approvalUsers, temp) } else { temp := fmt.Sprintf("第%s审批人: %s %s %s %s", common.TransferNum(i+1), tt.Name, passString, tt.OperatedAt, greetString) approvalUsers = append(approvalUsers, temp) } } if res.Type == e.TypeContent { temp := vo.ContentInfo{ Info: res.Content, Type: "string", Title: "内容", } content = append(content, temp) } else if res.Type == e.TypeShow { temp := vo.ContentInfo{ Info: res.Content, Type: "string", Title: "具体内容", } content = append(content, temp) } else if res.Type == e.TypeWork { if res.Work != nil { title := "" for _, t := range res.Work.ApprovalWorks { title = title + " " + t.ArtworkName } content = append(content, vo.ContentInfo{ Info: title, Type: "string", Title: "申请内容", }) } temp1 := vo.ContentInfo{ Info: res.Content, Type: "string", Title: "具体内容", } content = append(content, temp1) } else if res.Type == e.TypeBundle { if res.Bundle != nil { temp := vo.ContentInfo{ Info: res.Bundle.ApplicationsNum, Type: "num", Title: "申请数量", } content = append(content, temp) } temp1 := vo.ContentInfo{ Info: res.Content, Type: "string", Title: "具体内容", } content = append(content, temp1) } else if res.Type == e.TypeExhibition { if res.Exhibition != nil { for i, t := range res.Exhibition.ApprovalExhibitions { content = append(content, vo.ContentInfo{ Info: t.ArtExhibitionDetail.ShowName, Type: "string", Title: "名称" + fmt.Sprintf("%d", i+1), }) content = append(content, vo.ContentInfo{ Info: t.ShowDate, Type: "string", Title: "画展时间", }) content = append(content, vo.ContentInfo{ Info: t.Address, Type: "string", Title: "画展地址", }) content = append(content, vo.ContentInfo{ Info: t.ArtExhibitionDetail.ArtistShowCount, Type: "string", Title: "画家名称", }) content = append(content, vo.ContentInfo{ Info: t.ArtExhibitionDetail.ArtworkNum, Type: "string", Title: "包含画作数量", }) content = append(content, vo.ContentInfo{ Info: t.ArtExhibitionDetail.Ruler, Type: "string", Title: "包含画作总平尺", }) content = append(content, vo.ContentInfo{ Info: t.ArtExhibitionDetail.Price, Type: "string", Title: "画作总价", }) type ArtworkList struct { Artworks []*api.Artwork `json:"Artworks"` } var artworkList ArtworkList artworkList.Artworks = make([]*api.Artwork, 0) artworkList.Artworks = t.Artworks marshal, err := json.Marshal(artworkList) if err != nil { return } content = append(content, vo.ContentInfo{ Info: string(marshal), Type: "artworkList", Title: "画作列表", }) //for _, artwork := range t.Artworks { // content = append(content, vo.ContentInfo{ // Info: artwork.ArtworkName, // Type: "string", // Title: "画作名称", // }) // content = append(content, vo.ContentInfo{ // Info: artwork.Tfnum, // Type: "string", // Title: "画作编号", // }) // content = append(content, vo.ContentInfo{ // Info: artwork.ArtistShowCount, // Type: "string", // Title: "画家名称", // }) // content = append(content, vo.ContentInfo{ // Info: artwork.Length, // Type: "num", // Title: "长", // }) // content = append(content, vo.ContentInfo{ // Info: artwork.Width, // Type: "num", // Title: "宽", // }) // content = append(content, vo.ContentInfo{ // Info: artwork.Ruler, // Type: "num", // Title: "平尺数", // }) // content = append(content, vo.ContentInfo{ // Info: artwork.SaleAddress, // Type: "string", // Title: "销售站点", // }) //} } } temp1 := vo.ContentInfo{ Info: res.Content, Type: "string", Title: "具体内容", } content = append(content, temp1) } else if strings.Contains(res.Type, "turnover") { if res.ApprovalOA != nil { if res.ApprovalOA.Turnover != nil { detail := res.ApprovalOA.Turnover content = append(content, vo.ContentInfo{ Info: detail.ActionTime, Type: "string", Title: "申请日期", }) content = append(content, vo.ContentInfo{ Info: detail.StaffName, Type: "string", Title: "申请人", }) departments := "" positions := "" for index, applyPosition := range detail.Positions { if index == 0 { departments = applyPosition.DepartmentName positions = applyPosition.PositionName } else { departments = departments + "|" + applyPosition.DepartmentName positions = positions + "|" + applyPosition.PositionName } } content = append(content, vo.ContentInfo{ Info: departments, Type: "string", Title: "部门", }) content = append(content, vo.ContentInfo{ Info: positions, Type: "string", Title: "岗位", }) content = append(content, vo.ContentInfo{ Info: detail.StaffNum, Type: "string", Title: "工号", }) content = append(content, vo.ContentInfo{ Info: detail.JoinTime, Type: "string", Title: "入职日期", }) content = append(content, vo.ContentInfo{ Info: detail.LeftTime, Type: "string", Title: "离职日期", }) content = append(content, vo.ContentInfo{ Info: detail.Address, Type: "string", Title: "离职后住址", }) content = append(content, vo.ContentInfo{ Info: detail.ContactInfo, Type: "string", Title: "联系电话", }) content = append(content, vo.ContentInfo{ Info: detail.Reason, Type: "string", Title: "离职原因", }) } } } else if strings.Contains(res.Type, "handover") { if res.ApprovalOA != nil { if res.ApprovalOA.Turnover != nil { detail := res.ApprovalOA.Turnover content = append(content, vo.ContentInfo{ Info: detail.StaffName, Type: "string", Title: "申请人", }) departments := "" positions := "" for index, applyPosition := range detail.Positions { if index == 0 { departments = applyPosition.DepartmentName positions = applyPosition.PositionName } else { departments = departments + "|" + applyPosition.DepartmentName positions = positions + "|" + applyPosition.PositionName } } content = append(content, vo.ContentInfo{ Info: departments, Type: "string", Title: "部门", }) content = append(content, vo.ContentInfo{ Info: positions, Type: "string", Title: "岗位", }) content = append(content, vo.ContentInfo{ Info: detail.StaffNum, Type: "string", Title: "工号", }) content = append(content, vo.ContentInfo{ Info: detail.JoinTime, Type: "string", Title: "入职日期", }) content = append(content, vo.ContentInfo{ Info: detail.LeftTime, Type: "string", Title: "离职日期", }) content = append(content, vo.ContentInfo{ Info: detail.Address, Type: "string", Title: "离职后住址", }) content = append(content, vo.ContentInfo{ Info: detail.ContactInfo, Type: "string", Title: "联系电话", }) content = append(content, vo.ContentInfo{ Info: detail.HandoverName, Type: "string", Title: "交接人", }) content = append(content, vo.ContentInfo{ Info: detail.SuperviseName, Type: "string", Title: "监交人", }) content = append(content, vo.ContentInfo{ Info: detail.WorkItems, Type: "string", Title: "工作交接事项", }) content = append(content, vo.ContentInfo{ Info: detail.FinanceItems, Type: "string", Title: "财务交接事项", }) } } } else if strings.Contains(res.Type, "employ") { if res.Employ != nil { detail := res.Employ content = append(content, vo.ContentInfo{ Info: detail.BelongDepartment, Type: "string", Title: "归属部门", }) content = append(content, vo.ContentInfo{ Info: detail.Post, Type: "string", Title: "岗位名称", }) content = append(content, vo.ContentInfo{ Info: detail.Name, Type: "string", Title: "姓名", }) content = append(content, vo.ContentInfo{ Info: detail.Mobile, Type: "string", Title: "手机号", }) content = append(content, vo.ContentInfo{ Info: detail.EmployeeType, Type: "string", Title: "员工类型", }) content = append(content, vo.ContentInfo{ Info: detail.EntryTime, Type: "string", Title: "预计入职时间", }) content = append(content, vo.ContentInfo{ Info: detail.EmployeeNo, Type: "string", Title: "工号", }) content = append(content, vo.ContentInfo{ Info: detail.Remark, Type: "string", Title: "备注", }) } } else if strings.Contains(res.Type, "staffSupply") { if res.StaffSupply != nil { detail := res.StaffSupply content = append(content, vo.ContentInfo{ Info: detail.DepartmentName, Type: "string", Title: "归属部门", }) content = append(content, vo.ContentInfo{ Info: detail.PositionName, Type: "string", Title: "岗位名称", }) content = append(content, vo.ContentInfo{ Info: detail.Num, Type: "num", Title: "申请增补人数", }) content = append(content, vo.ContentInfo{ Info: detail.JobAsk, Type: "string", Title: "岗位需求", }) content = append(content, vo.ContentInfo{ Info: detail.JoinInTime, Type: "string", Title: "期待到职日期", }) } } else if strings.Contains(res.Type, "position") { for _, tt := range res.CustomizeInfo { if strings.Contains(tt.ApprovalType, "position") { type PositionJson struct { DepartmentID int32 DepartmentName string PositionName string } var posi PositionJson if err := json.Unmarshal([]byte(tt.ApprovalValue), &posi); err != nil { return } temp := vo.ContentInfo{ Info: posi.DepartmentName + "-" + posi.PositionName, Type: tt.ApprovalType, Title: tt.ApprovalName, } content = append(content, temp) } else { temp := vo.ContentInfo{ Info: tt.ApprovalValue, Type: tt.ApprovalType, Title: tt.ApprovalName, } content = append(content, temp) } } } else if res.Type == "promotion" { if res.Promotion != nil { detail := res.Promotion content = append(content, vo.ContentInfo{ Info: detail.StaffName + "(" + detail.StaffNum + ")", Type: "string", Title: "姓名", }) content = append(content, vo.ContentInfo{ Info: detail.OldJob, Type: "string", Title: "原职务", }) content = append(content, vo.ContentInfo{ Info: detail.NewJob, Type: "string", Title: "任命职务", }) content = append(content, vo.ContentInfo{ Info: detail.EffectiveTime, Type: "string", Title: "生效日期", }) } } else if res.Type == "leave" || res.Type == "sick" || res.Type == "annualLeave" || res.Type == "dayOff" || res.Type == "maritalLeave" || res.Type == "matingCheckLeave" || res.Type == "maternityLeave" || res.Type == "paternityLeave" || res.Type == "parentalLeave" || res.Type == "nursingLeave" || res.Type == "funeralLeave" || res.Type == "abortLeave" || res.Type == "breastFeedingLeave" { if res.ApprovalOA.Leave != nil { detail := res.ApprovalOA.Leave content = append(content, vo.ContentInfo{ Info: detail.ApplyTimes[0].Date + detail.ApplyTimes[0].Hour + detail.ApplyTimes[0].M, Type: "string", Title: "开始时间", }) content = append(content, vo.ContentInfo{ Info: detail.ApplyTimes[1].Date + detail.ApplyTimes[1].Hour + detail.ApplyTimes[1].M, Type: "string", Title: "结束时间", }) content = append(content, vo.ContentInfo{ Info: detail.Reason, Type: "string", Title: "理由", }) } } else if res.Type == "makeUp" { if res.ApprovalOA.MakeUp != nil { detail := res.ApprovalOA.MakeUp content = append(content, vo.ContentInfo{ Info: detail.ApplyTimes[0].Date + detail.ApplyTimes[0].Hour + detail.ApplyTimes[0].M, Type: "string", Title: "补卡时间", }) content = append(content, vo.ContentInfo{ Info: detail.Reason, Type: "string", Title: "理由", }) } } else if res.Type == "overTime" { if res.ApprovalOA.OverTime != nil { detail := res.ApprovalOA.OverTime content = append(content, vo.ContentInfo{ Info: detail.ApplyTimes[0].Date + detail.ApplyTimes[0].Hour + detail.ApplyTimes[0].M, Type: "string", Title: "开始时间", }) content = append(content, vo.ContentInfo{ Info: detail.ApplyTimes[1].Date + detail.ApplyTimes[1].Hour + detail.ApplyTimes[1].M, Type: "string", Title: "结束时间", }) content = append(content, vo.ContentInfo{ Info: detail.Reason, Type: "string", Title: "理由", }) } } else if res.Type == "outWork" { if res.ApprovalOA.OutWork != nil { detail := res.ApprovalOA.OutWork content = append(content, vo.ContentInfo{ Info: detail.ApplyTimes[0].Date + detail.ApplyTimes[0].Hour + detail.ApplyTimes[0].M, Type: "string", Title: "开始时间", }) content = append(content, vo.ContentInfo{ Info: detail.ApplyTimes[1].Date + detail.ApplyTimes[1].Hour + detail.ApplyTimes[1].M, Type: "string", Title: "结束时间", }) content = append(content, vo.ContentInfo{ Info: detail.Reason, Type: "string", Title: "理由", }) } } else if res.Type == "businessTrip" { if res.ApprovalOA.BusinessTrip != nil { detail := res.ApprovalOA.BusinessTrip for _, itinerary := range detail.ItineraryList { content = append(content, vo.ContentInfo{ Info: itinerary.Vehicle, Type: "string", Title: "交通工具", }) content = append(content, vo.ContentInfo{ Info: itinerary.StartAddress, Type: "string", Title: "出发地", }) content = append(content, vo.ContentInfo{ Info: itinerary.EndAddress, Type: "string", Title: "目的地", }) content = append(content, vo.ContentInfo{ Info: itinerary.ApplyTimes[0].Date + itinerary.ApplyTimes[0].Hour + itinerary.ApplyTimes[0].M, Type: "string", Title: "开始时间", }) content = append(content, vo.ContentInfo{ Info: itinerary.ApplyTimes[1].Date + itinerary.ApplyTimes[1].Hour + itinerary.ApplyTimes[1].M, Type: "string", Title: "结束时间", }) } content = append(content, vo.ContentInfo{ Info: detail.Reason, Type: "string", Title: "理由", }) } } else if res.Type == "goOut" { if res.ApprovalOA.GoOut != nil { detail := res.ApprovalOA.GoOut content = append(content, vo.ContentInfo{ Info: detail.ApplyTimes[0].Date + detail.ApplyTimes[0].Hour + detail.ApplyTimes[0].M, Type: "string", Title: "开始时间", }) content = append(content, vo.ContentInfo{ Info: detail.ApplyTimes[1].Date + detail.ApplyTimes[1].Hour + detail.ApplyTimes[1].M, Type: "string", Title: "结束时间", }) content = append(content, vo.ContentInfo{ Info: detail.Reason, Type: "string", Title: "理由", }) } } else if res.Type == "parentalLeaveApply" || res.Type == "nursingLeaveApply" { if res.ApprovalOA.LeaveApply != nil { detail := res.ApprovalOA.LeaveApply content = append(content, vo.ContentInfo{ Info: detail.LeaveBalance, Type: "num", Title: "申请天数", }) content = append(content, vo.ContentInfo{ Info: detail.Reason, Type: "string", Title: "理由", }) } } else if res.Type == "bundlePayPrice" { if res.BundlePayPrice != nil { detail := res.BundlePayPrice content = append(content, vo.ContentInfo{ Info: detail.ShowName, Type: "string", Title: "画展包名称", }) content = append(content, vo.ContentInfo{ Info: detail.ShowDate, Type: "string", Title: "画展时间", }) content = append(content, vo.ContentInfo{ Info: detail.ShowLowPrice, Type: "string", Title: "画展包底价", }) content = append(content, vo.ContentInfo{ Info: detail.ShowAddress, Type: "string", Title: "画展地址", }) content = append(content, vo.ContentInfo{ Info: detail.ArtistShowCount, Type: "string", Title: "画家名称", }) content = append(content, vo.ContentInfo{ Info: detail.ArtworkNum, Type: "num", Title: "作品数量", }) content = append(content, vo.ContentInfo{ Info: detail.ArtworkSize, Type: "string", Title: "作品总平尺", }) } } else if res.Type == "showUpdate" { if res.ExhibitionHis != nil { detail := res.ExhibitionHis for _, hiss := range detail.ApprovalExhibitionHiss { content = append(content, vo.ContentInfo{ Info: hiss.PackageName, Type: "string", Title: "画展包", }) content = append(content, vo.ContentInfo{ Info: hiss.ArtExhibitionDetail.ArtistShowCount, Type: "string", Title: "画家", }) content = append(content, vo.ContentInfo{ Info: hiss.ArtExhibitionDetail.Price, Type: "num", Title: "价格", }) content = append(content, vo.ContentInfo{ Info: hiss.ArtExhibitionDetail.Reward, Type: "num", Title: "润格", }) content = append(content, vo.ContentInfo{ Info: hiss.PackageSize, Type: "num", Title: "平尺数", }) content = append(content, vo.ContentInfo{ Info: hiss.ShowDate, Type: "string", Title: "画展时间", }) } } } else { for _, tt := range res.CustomizeInfo { temp := vo.ContentInfo{ Info: tt.ApprovalValue, Type: tt.ApprovalType, Title: tt.ApprovalName, } content = append(content, temp) } } approvalInfo := vo.ApprovalPrintInfo{ Status: res.Status, ApprovalNum: common.GenerateCode(res.ID), CreatedAt: res.CreatedAt, TypeString: detailRes.Title, SubmitterInfo: submitterInfo, PrinterInfo: printerInfo, CopyUsers: copyUsers, ApprovalUsers: approvalUsers, ContentMap: content, } //switch res.Type { //case e.TypeContent: // // temp := vo.ContentInfo{ // Info: res.Content, // Type: "string", // Title: "内容", // } // content = append(content, temp) // //case e.TypeShow: // // temp := vo.ContentInfo{ // Info: res.Content, // Type: "string", // Title: "具体内容", // } // content = append(content, temp) // //case e.TypeWork: // // if res.Work != nil { // temp := vo.ContentInfo{ // Info: res.Work.ReceivedAt, // Type: "string", // Title: "领取时间", // } // // content = append(content, temp) // title := "" // for _, t := range res.Work.ApprovalWorks { // title = title + " " + t.ArtworkName // } // content = append(content, vo.ContentInfo{ // Info: title, // Type: "string", // Title: "申请内容", // }) // // } // // temp1 := vo.ContentInfo{ // Info: res.Content, // Type: "string", // Title: "具体内容", // } // // content = append(content, temp1) // //case e.TypeBundle: // if res.Bundle != nil { // temp := vo.ContentInfo{ // Info: res.Bundle.ApplicationsNum, // Type: "num", // Title: "申请数量", // } // // content = append(content, temp) // content = append(content, vo.ContentInfo{ // Info: res.Bundle.ReceivedAt, // Type: "string", // Title: "领取时间", // }) // // } // // temp1 := vo.ContentInfo{ // Info: res.Content, // Type: "string", // Title: "具体内容", // } // // content = append(content, temp1) // //case e.TypeExhibition: // // if res.Exhibition != nil { // // for i, t := range res.Exhibition.ApprovalExhibitions { // content = append(content, vo.ContentInfo{ // Info: t.ArtExhibitionDetail.ShowName, // Type: "string", // Title: "名称" + fmt.Sprintf("%d", i+1), // }) // // content = append(content, vo.ContentInfo{ // Info: t.ShowDate, // Type: "string", // Title: "画展时间", // }) // // content = append(content, vo.ContentInfo{ // Info: t.Address, // Type: "string", // Title: "画展地址", // }) // } // // content = append(content, vo.ContentInfo{ // Info: res.Exhibition.ReceivedAt, // Type: "string", // Title: "领取时间", // }) // // } // // temp1 := vo.ContentInfo{ // Info: res.Content, // Type: "string", // Title: "具体内容", // } // // content = append(content, temp1) // //case "turnover": // if res.ApprovalOA != nil { // if res.ApprovalOA.Turnover != nil { // detail := res.ApprovalOA.Turnover // // content = append(content, vo.ContentInfo{ // Info: detail.ActionTime, // Type: "string", // Title: "申请日期", // }) // content = append(content, vo.ContentInfo{ // Info: detail.StaffName, // Type: "string", // Title: "申请人", // }) // departments := "" // positions := "" // for index, applyPosition := range detail.Positions { // if index == 0 { // departments = applyPosition.DepartmentName // positions = applyPosition.PositionName // } else { // departments = departments + "|" + applyPosition.DepartmentName // positions = positions + "|" + applyPosition.PositionName // } // } // content = append(content, vo.ContentInfo{ // Info: departments, // Type: "string", // Title: "部门", // }) // content = append(content, vo.ContentInfo{ // Info: positions, // Type: "string", // Title: "岗位", // }) // content = append(content, vo.ContentInfo{ // Info: detail.StaffNum, // Type: "string", // Title: "工号", // }) // content = append(content, vo.ContentInfo{ // Info: detail.JoinTime, // Type: "string", // Title: "入职日期", // }) // content = append(content, vo.ContentInfo{ // Info: detail.LeftTime, // Type: "string", // Title: "离职日期", // }) // content = append(content, vo.ContentInfo{ // Info: detail.Address, // Type: "string", // Title: "离职后住址", // }) // content = append(content, vo.ContentInfo{ // Info: detail.ContactInfo, // Type: "string", // Title: "联系电话", // }) // content = append(content, vo.ContentInfo{ // Info: detail.Reason, // Type: "string", // Title: "离职原因", // }) // // } // // } // //case "handover": // if res.ApprovalOA != nil { // if res.ApprovalOA.Turnover != nil { // detail := res.ApprovalOA.Turnover // content = append(content, vo.ContentInfo{ // Info: detail.StaffName, // Type: "string", // Title: "申请人", // }) // departments := "" // positions := "" // for index, applyPosition := range detail.Positions { // if index == 0 { // departments = applyPosition.DepartmentName // positions = applyPosition.PositionName // } else { // departments = departments + "|" + applyPosition.DepartmentName // positions = positions + "|" + applyPosition.PositionName // } // } // content = append(content, vo.ContentInfo{ // Info: departments, // Type: "string", // Title: "部门", // }) // content = append(content, vo.ContentInfo{ // Info: positions, // Type: "string", // Title: "岗位", // }) // content = append(content, vo.ContentInfo{ // Info: detail.StaffNum, // Type: "string", // Title: "工号", // }) // content = append(content, vo.ContentInfo{ // Info: detail.JoinTime, // Type: "string", // Title: "入职日期", // }) // content = append(content, vo.ContentInfo{ // Info: detail.LeftTime, // Type: "string", // Title: "离职日期", // }) // content = append(content, vo.ContentInfo{ // Info: detail.Address, // Type: "string", // Title: "离职后住址", // }) // content = append(content, vo.ContentInfo{ // Info: detail.ContactInfo, // Type: "string", // Title: "联系电话", // }) // content = append(content, vo.ContentInfo{ // Info: detail.HandoverName, // Type: "string", // Title: "交接人", // }) // content = append(content, vo.ContentInfo{ // Info: detail.SuperviseName, // Type: "string", // Title: "监交人", // }) // content = append(content, vo.ContentInfo{ // Info: detail.WorkItems, // Type: "string", // Title: "工作交接事项", // }) // content = append(content, vo.ContentInfo{ // Info: detail.FinanceItems, // Type: "string", // Title: "财务交接事项", // }) // } // // } //default: //其它json // for _, tt := range res.CustomizeInfo { // temp := vo.ContentInfo{ // Info: tt.ApprovalValue, // Type: tt.ApprovalType, // Title: tt.ApprovalName, // } // content = append(content, temp) // } //} service.Success(c, approvalInfo) } // Send 催办 func Send(c *gin.Context) { var req api.DetailRequest if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { service.Error(c, e.Error, err) return } res, err := service.ApprovalProvider.Detail(c, &req) if err != nil { service.Error(c, e.Error, err) return } nowUserInfo, err := account.GetUserInfoById(c, res.NowUserId, "") if err != nil { service.Error(c, e.Error, err) return } url := fmt.Sprintf("https://erpapi.fontree.cn/approval7524164487E?id=%d&userId=%d", req.ID, res.NowUserId) //todo 拉取了dev分支后,这个方法没有 shortUrl, err := utils.CreateShortUrl(url) if err == nil { url = shortUrl } msgReq := account2.SendCustomMsgRequest{ ID: res.NowUserId, TelNum: nowUserInfo.TelNum, MId: 136784, SigNo: uint32(config.DefaultSignNo), } //亲爱用户,您有【】审批催办已经发送,请点击查看【】 fmt.Println("发送短信") if err == nil { msgReq.Url = res.TypeName + "|" + url fmt.Println("发送短信", msgReq) mres, err := service.AccountProvider.SendCustomMsg(c, &msgReq) fmt.Println("发送短信返回", mres, err) } service.Success(c, res) } func DetailEx(c *gin.Context) { var st api.StatusRequest if err := c.ShouldBindBodyWith(&st, binding.JSON); err != nil { service.Error(c, e.Error, err) return } req := api.DetailRequest{ ID: st.ID, UserId: st.UserId, } res, err := service.ApprovalProvider.Detail(c, &req) if err != nil { service.Error(c, e.Error, err) return } service.Success(c, res) } func Detail(c *gin.Context) { var req api.DetailRequest if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { service.Error(c, e.Error, err) return } userInfo := login.GetUserInfoFromC(c) req.UserId = userInfo.ID res, err := service.ApprovalProvider.Detail(c, &req) if err != nil { service.Error(c, e.Error, err) return } service.Success(c, res) } func Update(c *gin.Context) { var req api.CreateRequest if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { service.Error(c, e.Error, err) return } res, err := service.ApprovalProvider.Update(c, &req) if err != nil { service.Error(c, e.Error, err) return } //修改附带 if _, err := passSynToArtShow(c, req.ID); err != nil { service.Error(c, e.Error, err) return } service.Success(c, res) } func MyWork(c *gin.Context) { var req api.ListRequest if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { service.Error(c, e.Error, err) return } userInfo := login.GetUserInfoFromC(c) req.UserID = userInfo.ID if req.Status == 0 { for i := 0; i < len(userInfo.PositionUsers); i++ { if userInfo.PositionUsers[i].DepartmentName == "超级管理员" { req.UserID = 0 } } } if req.OrderBy == "" { req.OrderBy = "desc" } if req.StartTime != "" && req.EndTime != "" { req.StartTime = req.StartTime + " 00:00:00" req.EndTime = req.EndTime + " 23:59:59" req.OrderBy = "asc" } res, err := service.ApprovalProvider.MyWork(c, &req) if err != nil { service.Error(c, e.Error, err) return } service.Success(c, res) } // CheckBundlePay 画展包付款单申请下载的权限 func CheckBundlePay(c *gin.Context) { var req api.IsExistPayRightRequest resObj := vo.IsExist{IsPass: false} if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { service.Error(c, e.Error, err) return } userInfo := login.GetUserInfoFromC(c) req.UserId = userInfo.ID //我审批过的 res, err := service.ApprovalProvider.IsExistPayRight(c, &req) if err != nil { service.Error(c, e.Error, err) return } resObj.IsPass = res.IsPass service.Success(c, resObj) return } func Approved(c *gin.Context) { var req api.ListRequest if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { service.Error(c, e.Error, err) return } userInfo := login.GetUserInfoFromC(c) //req.UserID = userInfo.ID req.ApprovedBossId = userInfo.ID //我审批过的 if req.OrderBy == "" { req.OrderBy = "desc" } if req.StartTime != "" && req.EndTime != "" { req.StartTime = req.StartTime + " 00:00:00" req.EndTime = req.EndTime + " 23:59:59" req.OrderBy = "asc" } res, err := service.ApprovalProvider.MyWork(c, &req) if err != nil { service.Error(c, e.Error, err) return } //全局搜索过滤 if len(res.Data) > 0 && req.AllQuery != "" { fmt.Println("========================全局搜索过滤==============================") filterData := make([]*api.CreateRequest, 0) for _, approvalItem := range res.Data { flag := 0 if strings.Contains(approvalItem.Content, req.AllQuery) || strings.Contains(approvalItem.Reply, req.AllQuery) || strings.Contains(approvalItem.SubmitterName, req.AllQuery) || strings.Contains(approvalItem.NowUserName, req.AllQuery) || strings.Contains(approvalItem.CreatedAt, req.AllQuery) || strings.Contains(approvalItem.TypeName, req.AllQuery) { flag = flag + 1 } if approvalItem.Work != nil { if len(approvalItem.Work.ApprovalWorks) > 0 { for _, work := range approvalItem.Work.ApprovalWorks { if strings.Contains(work.ArtworkName, req.AllQuery) || strings.Contains(work.ArtistShowCount, req.AllQuery) || strings.Contains(work.ArtworkCover, req.AllQuery) { flag = flag + 1 break } } } } if len(approvalItem.Show) > 0 { for _, show := range approvalItem.Show { if strings.Contains(show.Address, req.AllQuery) { flag = flag + 1 break } } } if approvalItem.Exhibition != nil { if strings.Contains(approvalItem.Exhibition.Address, req.AllQuery) { flag = flag + 1 } if len(approvalItem.Exhibition.ApprovalExhibitions) > 0 { for _, exhibition := range approvalItem.Exhibition.ApprovalExhibitions { if len(exhibition.Artworks) > 0 { for _, artwork := range exhibition.Artworks { if strings.Contains(artwork.ArtworkName, req.AllQuery) || strings.Contains(artwork.ArtistShowCount, req.AllQuery) || strings.Contains(artwork.SaleAddress, req.AllQuery) || strings.Contains(artwork.Reward, req.AllQuery) || strings.Contains(artwork.Tfnum, req.AllQuery) { flag = flag + 1 break } } } if exhibition.ArtExhibitionDetail != nil { if strings.Contains(exhibition.ArtExhibitionDetail.ArtistShowCount, req.AllQuery) || strings.Contains(exhibition.ArtExhibitionDetail.ShowTime, req.AllQuery) || strings.Contains(exhibition.ArtExhibitionDetail.ShowName, req.AllQuery) || strings.Contains(exhibition.ArtExhibitionDetail.Address, req.AllQuery) { flag = flag + 1 break } } } } } if len(approvalItem.WorkFlows) > 0 { for _, user := range approvalItem.WorkFlows { if strings.Contains(user.Name, req.AllQuery) { flag = flag + 1 break } } } if len(approvalItem.CopyUsers) > 0 { for _, copyUser := range approvalItem.CopyUsers { if strings.Contains(copyUser.Name, req.AllQuery) { flag = flag + 1 break } } } if len(approvalItem.CustomizeInfo) > 0 { for _, keyInfo := range approvalItem.CustomizeInfo { if strings.Contains(keyInfo.ApprovalValue, req.AllQuery) { flag = flag + 1 break } } } if approvalItem.BundlePayPrice != nil { if strings.Contains(approvalItem.BundlePayPrice.ShowName, req.AllQuery) || strings.Contains(approvalItem.BundlePayPrice.ArtistShowCount, req.AllQuery) || strings.Contains(approvalItem.BundlePayPrice.ShowLowPrice, req.AllQuery) || strings.Contains(approvalItem.BundlePayPrice.ArtworkSize, req.AllQuery) || strings.Contains(approvalItem.BundlePayPrice.ShowAddress, req.AllQuery) || strings.Contains(approvalItem.BundlePayPrice.ShowDate, req.AllQuery) { flag = flag + 1 } } if approvalItem.ApprovalOA != nil { if strings.Contains(approvalItem.ApprovalOA.RevokeReason, req.AllQuery) { flag = flag + 1 } if approvalItem.ApprovalOA.LeaveApply != nil { if strings.Contains(approvalItem.ApprovalOA.LeaveApply.StaffName, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.LeaveApply.Reason, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.LeaveApply.StaffNum, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.LeaveApply.ActionTime, req.AllQuery) { flag = flag + 1 } } if approvalItem.ApprovalOA.OutWork != nil { if strings.Contains(approvalItem.ApprovalOA.OutWork.StaffName, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.OutWork.Reason, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.OutWork.StaffNum, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.OutWork.OutWorkAddress, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.OutWork.Vehicle, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.OutWork.ActionTime, req.AllQuery) { flag = flag + 1 } for _, applyTime := range approvalItem.ApprovalOA.OutWork.ApplyTimes { if strings.Contains(applyTime.Date, req.AllQuery) { flag = flag + 1 break } } } if approvalItem.ApprovalOA.MakeUp != nil { if strings.Contains(approvalItem.ApprovalOA.MakeUp.StaffName, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.MakeUp.Reason, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.MakeUp.StaffNum, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.MakeUp.ActionTime, req.AllQuery) { flag = flag + 1 } for _, applyTime := range approvalItem.ApprovalOA.MakeUp.ApplyTimes { if strings.Contains(applyTime.Date, req.AllQuery) { flag = flag + 1 break } } } if approvalItem.ApprovalOA.Turnover != nil { fmt.Println("=====================turnover=====================") fmt.Println(approvalItem.ApprovalOA.Turnover) if strings.Contains(approvalItem.ApprovalOA.Turnover.StaffName, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.Turnover.Reason, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.Turnover.StaffNum, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.Turnover.HandoverName, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.Turnover.JoinTime, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.Turnover.LeftTime, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.Turnover.ContactInfo, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.Turnover.HandoverNum, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.Turnover.Address, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.Turnover.SuperviseName, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.Turnover.SuperviseNum, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.Turnover.WorkItems, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.Turnover.FinanceItems, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.Turnover.ActionTime, req.AllQuery) { flag = flag + 1 } for _, applyTime := range approvalItem.ApprovalOA.Turnover.ApplyTimes { if strings.Contains(applyTime.Date, req.AllQuery) { flag = flag + 1 break } } fmt.Println("=====================flag=====================") fmt.Println(flag) } if approvalItem.ApprovalOA.OverTime != nil { if strings.Contains(approvalItem.ApprovalOA.OverTime.StaffName, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.OverTime.Reason, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.OverTime.StaffNum, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.OverTime.ActionTime, req.AllQuery) { flag = flag + 1 } for _, applyTime := range approvalItem.ApprovalOA.OverTime.ApplyTimes { if strings.Contains(applyTime.Date, req.AllQuery) { flag = flag + 1 break } } } if approvalItem.ApprovalOA.Leave != nil { if strings.Contains(approvalItem.ApprovalOA.Leave.StaffName, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.Leave.Reason, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.Leave.StaffNum, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.Leave.DateOfBrith, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.Leave.ActionTime, req.AllQuery) { flag = flag + 1 } for _, applyTime := range approvalItem.ApprovalOA.Leave.ApplyTimes { if strings.Contains(applyTime.Date, req.AllQuery) { flag = flag + 1 break } } } if approvalItem.ApprovalOA.GoOut != nil { if strings.Contains(approvalItem.ApprovalOA.GoOut.StaffName, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.GoOut.Reason, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.GoOut.StaffNum, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.GoOut.DateOfBrith, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.GoOut.ActionTime, req.AllQuery) { flag = flag + 1 } for _, applyTime := range approvalItem.ApprovalOA.GoOut.ApplyTimes { if strings.Contains(applyTime.Date, req.AllQuery) { flag = flag + 1 break } } } if approvalItem.ApprovalOA.BusinessTrip != nil { if strings.Contains(approvalItem.ApprovalOA.BusinessTrip.StaffName, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.BusinessTrip.Reason, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.BusinessTrip.StaffNum, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.BusinessTrip.ActionTime, req.AllQuery) { flag = flag + 1 } for _, itinerary := range approvalItem.ApprovalOA.BusinessTrip.ItineraryList { if strings.Contains(itinerary.Vehicle, req.AllQuery) || strings.Contains(itinerary.EndAddress, req.AllQuery) || strings.Contains(itinerary.StartAddress, req.AllQuery) { flag = flag + 1 break } } } } if approvalItem.FinancialForm != nil { if strings.Contains(approvalItem.FinancialForm.PaymentCompany, req.AllQuery) || strings.Contains(approvalItem.FinancialForm.TransactionDepartment, req.AllQuery) || strings.Contains(approvalItem.FinancialForm.Payee, req.AllQuery) || strings.Contains(approvalItem.FinancialForm.BeneficiaryBank, req.AllQuery) || strings.Contains(approvalItem.FinancialForm.BankNo, req.AllQuery) || strings.Contains(approvalItem.FinancialForm.PaymentMethod, req.AllQuery) { flag = flag + 1 } for _, costInfo := range approvalItem.FinancialForm.CostInfo { if strings.Contains(costInfo.Description, req.AllQuery) || strings.Contains(costInfo.UnitPrice, req.AllQuery) || strings.Contains(costInfo.CostUnit, req.AllQuery) || strings.Contains(costInfo.UsedDepartment, req.AllQuery) || strings.Contains(costInfo.TotalPrice, req.AllQuery) { flag = flag + 1 break } } for _, invoiceInfo := range approvalItem.FinancialForm.InvoiceInfo { if strings.Contains(invoiceInfo.InvoiceDate, req.AllQuery) || strings.Contains(invoiceInfo.InvoiceNo, req.AllQuery) || strings.Contains(invoiceInfo.InvoiceProvider, req.AllQuery) || strings.Contains(invoiceInfo.Amount, req.AllQuery) || strings.Contains(invoiceInfo.Applicant, req.AllQuery) || strings.Contains(invoiceInfo.PaymentMethod, req.AllQuery) || strings.Contains(invoiceInfo.PaymentObj, req.AllQuery) || strings.Contains(invoiceInfo.InvoiceType, req.AllQuery) || strings.Contains(invoiceInfo.Notes, req.AllQuery) || strings.Contains(invoiceInfo.UseTo, req.AllQuery) { flag = flag + 1 break } } } if approvalItem.ExhibitionHis != nil { if strings.Contains(approvalItem.ExhibitionHis.Address, req.AllQuery) { flag = flag + 1 } if len(approvalItem.ExhibitionHis.ApprovalExhibitionHiss) > 0 { for _, exhibition := range approvalItem.ExhibitionHis.ApprovalExhibitionHiss { if len(exhibition.Artworks) > 0 { for _, artwork := range exhibition.Artworks { if strings.Contains(artwork.ArtworkName, req.AllQuery) || strings.Contains(artwork.ArtistShowCount, req.AllQuery) || strings.Contains(artwork.SaleAddress, req.AllQuery) || strings.Contains(artwork.Reward, req.AllQuery) || strings.Contains(artwork.Tfnum, req.AllQuery) { flag = flag + 1 break } } } if exhibition.ArtExhibitionDetail != nil { if strings.Contains(exhibition.ArtExhibitionDetail.ArtistShowCount, req.AllQuery) || strings.Contains(exhibition.ArtExhibitionDetail.ShowTime, req.AllQuery) || strings.Contains(exhibition.ArtExhibitionDetail.ShowName, req.AllQuery) || strings.Contains(exhibition.ArtExhibitionDetail.Address, req.AllQuery) { flag = flag + 1 break } } } } } if approvalItem.Promotion != nil { if strings.Contains(approvalItem.Promotion.StaffName, req.AllQuery) || strings.Contains(approvalItem.Promotion.StaffNum, req.AllQuery) || strings.Contains(approvalItem.Promotion.FileName, req.AllQuery) || strings.Contains(approvalItem.Promotion.NewJob, req.AllQuery) || strings.Contains(approvalItem.Promotion.EffectiveTime, req.AllQuery) || strings.Contains(approvalItem.Promotion.OldJob, req.AllQuery) { flag = flag + 1 } } if approvalItem.StaffSupply != nil { if strings.Contains(approvalItem.StaffSupply.PositionName, req.AllQuery) || strings.Contains(approvalItem.StaffSupply.JobAsk, req.AllQuery) || strings.Contains(approvalItem.StaffSupply.JoinInTime, req.AllQuery) || strings.Contains(approvalItem.StaffSupply.DepartmentName, req.AllQuery) { flag = flag + 1 } } if approvalItem.Employ != nil { if strings.Contains(approvalItem.Employ.Post, req.AllQuery) || strings.Contains(approvalItem.Employ.BelongDepartment, req.AllQuery) || strings.Contains(approvalItem.Employ.Name, req.AllQuery) || strings.Contains(approvalItem.Employ.EmployeeType, req.AllQuery) || strings.Contains(approvalItem.Employ.EmployeeNo, req.AllQuery) || strings.Contains(approvalItem.Employ.EntryTime, req.AllQuery) || strings.Contains(approvalItem.Employ.CloseReason, req.AllQuery) || strings.Contains(approvalItem.Employ.ConfirmDate, req.AllQuery) || strings.Contains(approvalItem.Employ.Remark, req.AllQuery) || strings.Contains(approvalItem.Employ.Mobile, req.AllQuery) { flag = flag + 1 } } if approvalItem.CheckIn != nil { if strings.Contains(approvalItem.CheckIn.SaleAddress, req.AllQuery) || strings.Contains(approvalItem.CheckIn.DetailAddress, req.AllQuery) { flag = flag + 1 } } if flag > 0 { filterData = append(filterData, approvalItem) } } fmt.Println("========================匹配所有字段结束,匹配结果==============================") fmt.Println(filterData) res.Data = filterData } if len(res.Data) > 0 { lang := c.Request.Header.Get("Accept-Language") for _, one := range res.Data { one.TypeName = model2.GetLanguageType(lang, one.TypeName) if one.ApprovalOA != nil { if one.ApprovalOA.Leave != nil { for _, applyTime := range one.ApprovalOA.Leave.ApplyTimes { applyTime.M = model2.GetLanguageType(lang, applyTime.M) } } if one.ApprovalOA.Turnover != nil { for _, applyTime := range one.ApprovalOA.Turnover.ApplyTimes { applyTime.M = model2.GetLanguageType(lang, applyTime.M) } } if one.ApprovalOA.BusinessTrip != nil { for _, itinerary := range one.ApprovalOA.BusinessTrip.ItineraryList { for _, applyTime := range itinerary.ApplyTimes { applyTime.M = model2.GetLanguageType(lang, applyTime.M) } } } if one.ApprovalOA.GoOut != nil { for _, applyTime := range one.ApprovalOA.GoOut.ApplyTimes { applyTime.M = model2.GetLanguageType(lang, applyTime.M) } } if one.ApprovalOA.OutWork != nil { for _, applyTime := range one.ApprovalOA.OutWork.ApplyTimes { applyTime.M = model2.GetLanguageType(lang, applyTime.M) } } if one.ApprovalOA.OverTime != nil { for _, applyTime := range one.ApprovalOA.OverTime.ApplyTimes { applyTime.M = model2.GetLanguageType(lang, applyTime.M) } } if one.ApprovalOA.MakeUp != nil { for _, applyTime := range one.ApprovalOA.MakeUp.ApplyTimes { applyTime.M = model2.GetLanguageType(lang, applyTime.M) } } } } } service.Success(c, res) return } func MySubmit(c *gin.Context) { var req api.ListRequest if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { service.Error(c, e.Error, err) return } userInfo := login.GetUserInfoFromC(c) req.UserID = userInfo.ID if req.OrderBy == "" { req.OrderBy = "desc" } res, err := service.ApprovalProvider.MySubmit(c, &req) if err != nil { service.Error(c, e.Error, err) return } //全局搜索过滤 if len(res.Data) > 0 && req.AllQuery != "" { fmt.Println("========================全局搜索过滤==============================") filterData := make([]*api.CreateRequest, 0) for _, approvalItem := range res.Data { flag := 0 if strings.Contains(approvalItem.Content, req.AllQuery) || strings.Contains(approvalItem.Reply, req.AllQuery) || strings.Contains(approvalItem.SubmitterName, req.AllQuery) || strings.Contains(approvalItem.NowUserName, req.AllQuery) || strings.Contains(approvalItem.CreatedAt, req.AllQuery) || strings.Contains(approvalItem.TypeName, req.AllQuery) { flag = flag + 1 } if approvalItem.Work != nil { if len(approvalItem.Work.ApprovalWorks) > 0 { for _, work := range approvalItem.Work.ApprovalWorks { if strings.Contains(work.ArtworkName, req.AllQuery) || strings.Contains(work.ArtistShowCount, req.AllQuery) || strings.Contains(work.ArtworkCover, req.AllQuery) { flag = flag + 1 break } } } } if len(approvalItem.Show) > 0 { for _, show := range approvalItem.Show { if strings.Contains(show.Address, req.AllQuery) { flag = flag + 1 break } } } if approvalItem.Exhibition != nil { if strings.Contains(approvalItem.Exhibition.Address, req.AllQuery) { flag = flag + 1 } if len(approvalItem.Exhibition.ApprovalExhibitions) > 0 { for _, exhibition := range approvalItem.Exhibition.ApprovalExhibitions { if len(exhibition.Artworks) > 0 { for _, artwork := range exhibition.Artworks { if strings.Contains(artwork.ArtworkName, req.AllQuery) || strings.Contains(artwork.ArtistShowCount, req.AllQuery) || strings.Contains(artwork.SaleAddress, req.AllQuery) || strings.Contains(artwork.Reward, req.AllQuery) || strings.Contains(artwork.Tfnum, req.AllQuery) { flag = flag + 1 break } } } if exhibition.ArtExhibitionDetail != nil { if strings.Contains(exhibition.ArtExhibitionDetail.ArtistShowCount, req.AllQuery) || strings.Contains(exhibition.ArtExhibitionDetail.ShowTime, req.AllQuery) || strings.Contains(exhibition.ArtExhibitionDetail.ShowName, req.AllQuery) || strings.Contains(exhibition.ArtExhibitionDetail.Address, req.AllQuery) { flag = flag + 1 break } } } } } if len(approvalItem.WorkFlows) > 0 { for _, user := range approvalItem.WorkFlows { if strings.Contains(user.Name, req.AllQuery) { flag = flag + 1 break } } } if len(approvalItem.CopyUsers) > 0 { for _, copyUser := range approvalItem.CopyUsers { if strings.Contains(copyUser.Name, req.AllQuery) { flag = flag + 1 break } } } if len(approvalItem.CustomizeInfo) > 0 { for _, keyInfo := range approvalItem.CustomizeInfo { if strings.Contains(keyInfo.ApprovalValue, req.AllQuery) { flag = flag + 1 break } } } if approvalItem.BundlePayPrice != nil { if strings.Contains(approvalItem.BundlePayPrice.ShowName, req.AllQuery) || strings.Contains(approvalItem.BundlePayPrice.ArtistShowCount, req.AllQuery) || strings.Contains(approvalItem.BundlePayPrice.ShowLowPrice, req.AllQuery) || strings.Contains(approvalItem.BundlePayPrice.ArtworkSize, req.AllQuery) || strings.Contains(approvalItem.BundlePayPrice.ShowAddress, req.AllQuery) || strings.Contains(approvalItem.BundlePayPrice.ShowDate, req.AllQuery) { flag = flag + 1 } } if approvalItem.ApprovalOA != nil { if strings.Contains(approvalItem.ApprovalOA.RevokeReason, req.AllQuery) { flag = flag + 1 } if approvalItem.ApprovalOA.LeaveApply != nil { if strings.Contains(approvalItem.ApprovalOA.LeaveApply.StaffName, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.LeaveApply.Reason, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.LeaveApply.StaffNum, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.LeaveApply.ActionTime, req.AllQuery) { flag = flag + 1 } } if approvalItem.ApprovalOA.OutWork != nil { if strings.Contains(approvalItem.ApprovalOA.OutWork.StaffName, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.OutWork.Reason, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.OutWork.StaffNum, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.OutWork.OutWorkAddress, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.OutWork.Vehicle, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.OutWork.ActionTime, req.AllQuery) { flag = flag + 1 } for _, applyTime := range approvalItem.ApprovalOA.OutWork.ApplyTimes { if strings.Contains(applyTime.Date, req.AllQuery) { flag = flag + 1 break } } } if approvalItem.ApprovalOA.MakeUp != nil { if strings.Contains(approvalItem.ApprovalOA.MakeUp.StaffName, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.MakeUp.Reason, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.MakeUp.StaffNum, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.MakeUp.ActionTime, req.AllQuery) { flag = flag + 1 } for _, applyTime := range approvalItem.ApprovalOA.MakeUp.ApplyTimes { if strings.Contains(applyTime.Date, req.AllQuery) { flag = flag + 1 break } } } if approvalItem.ApprovalOA.Turnover != nil { fmt.Println("=====================turnover=====================") fmt.Println(approvalItem.ApprovalOA.Turnover) if strings.Contains(approvalItem.ApprovalOA.Turnover.StaffName, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.Turnover.Reason, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.Turnover.StaffNum, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.Turnover.HandoverName, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.Turnover.JoinTime, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.Turnover.LeftTime, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.Turnover.ContactInfo, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.Turnover.HandoverNum, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.Turnover.Address, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.Turnover.SuperviseName, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.Turnover.SuperviseNum, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.Turnover.WorkItems, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.Turnover.FinanceItems, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.Turnover.ActionTime, req.AllQuery) { flag = flag + 1 } for _, applyTime := range approvalItem.ApprovalOA.Turnover.ApplyTimes { if strings.Contains(applyTime.Date, req.AllQuery) { flag = flag + 1 break } } fmt.Println("=====================flag=====================") fmt.Println(flag) } if approvalItem.ApprovalOA.OverTime != nil { if strings.Contains(approvalItem.ApprovalOA.OverTime.StaffName, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.OverTime.Reason, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.OverTime.StaffNum, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.OverTime.ActionTime, req.AllQuery) { flag = flag + 1 } for _, applyTime := range approvalItem.ApprovalOA.OverTime.ApplyTimes { if strings.Contains(applyTime.Date, req.AllQuery) { flag = flag + 1 break } } } if approvalItem.ApprovalOA.Leave != nil { if strings.Contains(approvalItem.ApprovalOA.Leave.StaffName, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.Leave.Reason, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.Leave.StaffNum, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.Leave.DateOfBrith, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.Leave.ActionTime, req.AllQuery) { flag = flag + 1 } for _, applyTime := range approvalItem.ApprovalOA.Leave.ApplyTimes { if strings.Contains(applyTime.Date, req.AllQuery) { flag = flag + 1 break } } } if approvalItem.ApprovalOA.GoOut != nil { if strings.Contains(approvalItem.ApprovalOA.GoOut.StaffName, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.GoOut.Reason, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.GoOut.StaffNum, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.GoOut.DateOfBrith, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.GoOut.ActionTime, req.AllQuery) { flag = flag + 1 } for _, applyTime := range approvalItem.ApprovalOA.GoOut.ApplyTimes { if strings.Contains(applyTime.Date, req.AllQuery) { flag = flag + 1 break } } } if approvalItem.ApprovalOA.BusinessTrip != nil { if strings.Contains(approvalItem.ApprovalOA.BusinessTrip.StaffName, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.BusinessTrip.Reason, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.BusinessTrip.StaffNum, req.AllQuery) || strings.Contains(approvalItem.ApprovalOA.BusinessTrip.ActionTime, req.AllQuery) { flag = flag + 1 } for _, itinerary := range approvalItem.ApprovalOA.BusinessTrip.ItineraryList { if strings.Contains(itinerary.Vehicle, req.AllQuery) || strings.Contains(itinerary.EndAddress, req.AllQuery) || strings.Contains(itinerary.StartAddress, req.AllQuery) { flag = flag + 1 break } } } } if approvalItem.FinancialForm != nil { if strings.Contains(approvalItem.FinancialForm.PaymentCompany, req.AllQuery) || strings.Contains(approvalItem.FinancialForm.TransactionDepartment, req.AllQuery) || strings.Contains(approvalItem.FinancialForm.Payee, req.AllQuery) || strings.Contains(approvalItem.FinancialForm.BeneficiaryBank, req.AllQuery) || strings.Contains(approvalItem.FinancialForm.BankNo, req.AllQuery) || strings.Contains(approvalItem.FinancialForm.PaymentMethod, req.AllQuery) { flag = flag + 1 } for _, costInfo := range approvalItem.FinancialForm.CostInfo { if strings.Contains(costInfo.Description, req.AllQuery) || strings.Contains(costInfo.UnitPrice, req.AllQuery) || strings.Contains(costInfo.CostUnit, req.AllQuery) || strings.Contains(costInfo.UsedDepartment, req.AllQuery) || strings.Contains(costInfo.TotalPrice, req.AllQuery) { flag = flag + 1 break } } for _, invoiceInfo := range approvalItem.FinancialForm.InvoiceInfo { if strings.Contains(invoiceInfo.InvoiceDate, req.AllQuery) || strings.Contains(invoiceInfo.InvoiceNo, req.AllQuery) || strings.Contains(invoiceInfo.InvoiceProvider, req.AllQuery) || strings.Contains(invoiceInfo.Amount, req.AllQuery) || strings.Contains(invoiceInfo.Applicant, req.AllQuery) || strings.Contains(invoiceInfo.PaymentMethod, req.AllQuery) || strings.Contains(invoiceInfo.PaymentObj, req.AllQuery) || strings.Contains(invoiceInfo.InvoiceType, req.AllQuery) || strings.Contains(invoiceInfo.Notes, req.AllQuery) || strings.Contains(invoiceInfo.UseTo, req.AllQuery) { flag = flag + 1 break } } } if approvalItem.ExhibitionHis != nil { if strings.Contains(approvalItem.ExhibitionHis.Address, req.AllQuery) { flag = flag + 1 } if len(approvalItem.ExhibitionHis.ApprovalExhibitionHiss) > 0 { for _, exhibition := range approvalItem.ExhibitionHis.ApprovalExhibitionHiss { if len(exhibition.Artworks) > 0 { for _, artwork := range exhibition.Artworks { if strings.Contains(artwork.ArtworkName, req.AllQuery) || strings.Contains(artwork.ArtistShowCount, req.AllQuery) || strings.Contains(artwork.SaleAddress, req.AllQuery) || strings.Contains(artwork.Reward, req.AllQuery) || strings.Contains(artwork.Tfnum, req.AllQuery) { flag = flag + 1 break } } } if exhibition.ArtExhibitionDetail != nil { if strings.Contains(exhibition.ArtExhibitionDetail.ArtistShowCount, req.AllQuery) || strings.Contains(exhibition.ArtExhibitionDetail.ShowTime, req.AllQuery) || strings.Contains(exhibition.ArtExhibitionDetail.ShowName, req.AllQuery) || strings.Contains(exhibition.ArtExhibitionDetail.Address, req.AllQuery) { flag = flag + 1 break } } } } } if approvalItem.Promotion != nil { if strings.Contains(approvalItem.Promotion.StaffName, req.AllQuery) || strings.Contains(approvalItem.Promotion.StaffNum, req.AllQuery) || strings.Contains(approvalItem.Promotion.FileName, req.AllQuery) || strings.Contains(approvalItem.Promotion.NewJob, req.AllQuery) || strings.Contains(approvalItem.Promotion.EffectiveTime, req.AllQuery) || strings.Contains(approvalItem.Promotion.OldJob, req.AllQuery) { flag = flag + 1 } } if approvalItem.StaffSupply != nil { if strings.Contains(approvalItem.StaffSupply.PositionName, req.AllQuery) || strings.Contains(approvalItem.StaffSupply.JobAsk, req.AllQuery) || strings.Contains(approvalItem.StaffSupply.JoinInTime, req.AllQuery) || strings.Contains(approvalItem.StaffSupply.DepartmentName, req.AllQuery) { flag = flag + 1 } } if approvalItem.Employ != nil { if strings.Contains(approvalItem.Employ.Post, req.AllQuery) || strings.Contains(approvalItem.Employ.BelongDepartment, req.AllQuery) || strings.Contains(approvalItem.Employ.Name, req.AllQuery) || strings.Contains(approvalItem.Employ.EmployeeType, req.AllQuery) || strings.Contains(approvalItem.Employ.EmployeeNo, req.AllQuery) || strings.Contains(approvalItem.Employ.EntryTime, req.AllQuery) || strings.Contains(approvalItem.Employ.CloseReason, req.AllQuery) || strings.Contains(approvalItem.Employ.ConfirmDate, req.AllQuery) || strings.Contains(approvalItem.Employ.Remark, req.AllQuery) || strings.Contains(approvalItem.Employ.Mobile, req.AllQuery) { flag = flag + 1 } } if approvalItem.CheckIn != nil { if strings.Contains(approvalItem.CheckIn.SaleAddress, req.AllQuery) || strings.Contains(approvalItem.CheckIn.DetailAddress, req.AllQuery) { flag = flag + 1 } } if flag > 0 { filterData = append(filterData, approvalItem) } } fmt.Println("========================匹配所有字段结束,匹配结果==============================") fmt.Println(filterData) res.Data = filterData } //国际化 if len(res.Data) > 0 { lang := c.Request.Header.Get("Accept-Language") for _, one := range res.Data { one.TypeName = model2.GetLanguageType(lang, one.TypeName) if one.ApprovalOA != nil { if one.ApprovalOA.Leave != nil { for _, applyTime := range one.ApprovalOA.Leave.ApplyTimes { applyTime.M = model2.GetLanguageType(lang, applyTime.M) } } if one.ApprovalOA.Turnover != nil { for _, applyTime := range one.ApprovalOA.Turnover.ApplyTimes { applyTime.M = model2.GetLanguageType(lang, applyTime.M) } } if one.ApprovalOA.BusinessTrip != nil { for _, itinerary := range one.ApprovalOA.BusinessTrip.ItineraryList { for _, applyTime := range itinerary.ApplyTimes { applyTime.M = model2.GetLanguageType(lang, applyTime.M) } } } if one.ApprovalOA.GoOut != nil { for _, applyTime := range one.ApprovalOA.GoOut.ApplyTimes { applyTime.M = model2.GetLanguageType(lang, applyTime.M) } } if one.ApprovalOA.OutWork != nil { for _, applyTime := range one.ApprovalOA.OutWork.ApplyTimes { applyTime.M = model2.GetLanguageType(lang, applyTime.M) } } if one.ApprovalOA.OverTime != nil { for _, applyTime := range one.ApprovalOA.OverTime.ApplyTimes { applyTime.M = model2.GetLanguageType(lang, applyTime.M) } } if one.ApprovalOA.MakeUp != nil { for _, applyTime := range one.ApprovalOA.MakeUp.ApplyTimes { applyTime.M = model2.GetLanguageType(lang, applyTime.M) } } } } } service.Success(c, res) } func Viewed(c *gin.Context) { var req api.ViewedRequest if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { service.Error(c, e.Error, err) return } userInfo := login.GetUserInfoFromC(c) req.UserID = userInfo.ID res, err := service.ApprovalProvider.Viewed(c, &req) if err != nil { service.Error(c, e.Error, err) return } detailReq := api.DetailRequest{ID: req.ID} detail, err := service.ApprovalProvider.Detail(c, &detailReq) if detail.TypeName == "人员增补申请" { err = checkPostApprove(userInfo, detail.ID) if err != nil { service.Error(c, e.Error, err) return } } if detail.TypeName == "录用申请" { err = checkOfferApprove(userInfo, detail.ID) if err != nil { service.Error(c, e.Error, err) return } } service.Success(c, res) } func Information(c *gin.Context) { var req api.InformationRequest if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { service.Error(c, e.Error, err) return } res, err := service.ApprovalProvider.Information(c, &req) if err != nil { service.Error(c, e.Error, err) return } service.Success(c, res) } func UpdateSetting(c *gin.Context) { var req api.SettingRequest if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { service.Error(c, e.Error, err) return } res, err := service.ApprovalProvider.UpdateSetting(c, &req) if err != nil { service.Error(c, e.Error, err) return } service.Success(c, res) } func DetailSetting(c *gin.Context) { var req api.DetailSettingRequest if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { service.Error(c, e.Error, err) return } res, err := service.ApprovalProvider.DetailSetting(c, &req) if err != nil { service.Error(c, e.Error, err) return } //当类型是离职交接时,验证是否有审批通过的离职申请,如果没有返回错误,如果有,把离职申请的相关内容塞到detail里面 if strings.Contains(req.KeyWord, "handover") { userInfo := login.GetUserInfoFromC(c) reqList := &api.ListRequest{} reqList.Domain = req.Domain reqList.Type = "turnover" reqList.UserID = userInfo.ID reqList.Status = 2 submitRes2, err := service.ApprovalProvider.MySubmit(context.Background(), reqList) if err != nil { service.Error(c, e.Error, errors.New("查询已提交的离职审批失败")) return } reqList.Status = 1 submitRes1, err := service.ApprovalProvider.MySubmit(context.Background(), reqList) if err != nil { service.Error(c, e.Error, errors.New("查询已提交的离职审批失败")) return } list := make([]*api.CreateRequest, 0) list = append(list, submitRes1.Data...) list = append(list, submitRes2.Data...) if len(list) > 0 { turnOver := &api.TurnoverApply{} turnOver = list[len(list)-1].ApprovalOA.Turnover res.Turnover = turnOver } } service.Success(c, res) } // RevokeLeaveApply // 撤销 请假申请 func RevokeLeaveApply(c *gin.Context) { /* 1、待审批 直接取消 2、未通过 撤销审批 审批人 根据 撤销的审批中的 审批人是否已审批 设置 3、通过 撤销审批 审批人 为 撤销的审批中的审批人 */ revokeReq := new(api.RevokeApprovalReq) if err := c.ShouldBindBodyWith(&revokeReq, binding.JSON); err != nil { service.Error(c, e.Error, err) return } beforeRevokeDetailReq := new(api.DetailRequest) beforeRevokeDetailReq.ID = revokeReq.ID beforeRevokeDetailRes, err := service.ApprovalProvider.Detail(context.Background(), beforeRevokeDetailReq) if err != nil { service.Error(c, e.Error, err) return } if beforeRevokeDetailRes.Type == oa_model.TypeNursingLeaveApply || beforeRevokeDetailRes.Type == oa_model.TypeParentalLeaveApply { err = CheckLeaveApplyIsUse(beforeRevokeDetailRes) if err != nil { service.Error(c, e.Error, err) return } } // 审批 撤销 _, err = service.ApprovalProvider.RevokeMyApproval(context.Background(), revokeReq) if err != nil { service.Error(c, e.Error, err) return } detailReq := new(api.DetailRequest) detailReq.ID = revokeReq.ID detailRes, err := service.ApprovalProvider.Detail(context.Background(), detailReq) if err != nil { service.Error(c, e.Error, err) return } if detailRes.Status != e.ApprovalWorkStatusRevoking { service.Error(c, e.Error, errors.New("撤销失败")) return } // oa 撤销 if oa_model.TypeZhCN[detailRes.Type] != "" { _, err = RevokeOaApproval(detailRes) if err != nil { service.Error(c, e.Error, err) return } } service.Success(c) } func passSynToShowRelUpdateNotLogin(c *gin.Context, ID uint64, UserId uint64) (string, error) { var detailReq api.DetailRequest detailReq.UserId = UserId detailReq.ID = ID detailRes, err3 := service.ApprovalProvider.Detail(c, &detailReq) if err3 != nil { return "", err3 } if detailRes.Type != "showUpdate" { return "", nil } if detailRes.Status != 2 { // 不等于2 表示 此审批 未通过 return "", nil } // 审批 通过 通知 画展包微服务 记录 req := detailRes updateShowTimeAndAddress := new(artShow.UpdateShowTimeAndAddressReq) updateShowTimeAndAddress.Data = make([]*artShow.ShowTimeAndAddress, 0) payBillUpdateAddress := paybill.UpdateAddressreq{} payBillUpdateAddress.Data = make([]*paybill.UpdateAddressreq_Info, 0) for _, tt := range req.ExhibitionHis.ApprovalExhibitionHiss { temp := &artShow.ShowTimeAndAddress{ ShowUid: tt.PackageID, Address: tt.Address, ShowTime: tt.ShowDate, } updateShowTimeAndAddress.Data = append(updateShowTimeAndAddress.Data, temp) payBillUpdateAddress.Data = append(payBillUpdateAddress.Data, &paybill.UpdateAddressreq_Info{ ShowUid: tt.PackageID, ShowDate: tt.ShowDate, Address: tt.Address, ApprovalId: req.ExhibitionHis.ApplyID, ShowName: tt.PackageName, }) } _, err := service.GrpcArtShowImpl.UpdateShowTimeAndAddress(c, updateShowTimeAndAddress) if err != nil { return "", err } _, err = service.GrpcPayBillImpl.UpdateAddress(c, &payBillUpdateAddress) if err != nil { return "", err } // 修改 画作销售站点 err = UpdateSaleAddress(detailRes) if err != nil { return "", err } return "", nil } func passSynToShowRelUpdate(c *gin.Context, ID uint64) (string, error) { var detailReq api.DetailRequest userInfo := login.GetUserInfoFromC(c) detailReq.UserId = userInfo.ID detailReq.ID = ID detailRes, err3 := service.ApprovalProvider.Detail(c, &detailReq) if err3 != nil { return "", err3 } if detailRes.Type != "showUpdate" { return "", nil } if detailRes.Status != 2 { // 2 表示 此审批 未通过 return "", nil } // 审批 通过 通知 画展包微服务 记录 req := detailRes updateShowTimeAndAddress := new(artShow.UpdateShowTimeAndAddressReq) updateShowTimeAndAddress.Data = make([]*artShow.ShowTimeAndAddress, 0) payBillUpdateAddress := paybill.UpdateAddressreq{} payBillUpdateAddress.Data = make([]*paybill.UpdateAddressreq_Info, 0) for _, tt := range req.ExhibitionHis.ApprovalExhibitionHiss { temp := &artShow.ShowTimeAndAddress{ ShowUid: tt.PackageID, Address: tt.Address, ShowTime: tt.ShowDate, } updateShowTimeAndAddress.Data = append(updateShowTimeAndAddress.Data, temp) payBillUpdateAddress.Data = append(payBillUpdateAddress.Data, &paybill.UpdateAddressreq_Info{ ShowUid: tt.PackageID, ShowDate: tt.ShowDate, Address: tt.Address, ApprovalId: strconv.FormatUint(req.ID, 10), ShowName: tt.PackageName, }) } _, err := service.GrpcArtShowImpl.UpdateShowTimeAndAddress(c, updateShowTimeAndAddress) if err != nil { return "", err } _, err = service.GrpcPayBillImpl.UpdateAddress(c, &payBillUpdateAddress) if err != nil { return "", err } // 修改 画作销售站点 err = UpdateSaleAddress(detailRes) if err != nil { return "", err } /* // 通过 rabbitmq 发送 到 画家系统 用于 确认 是否 参加画展 artistUIDs := make([]string, 0) for i := 0; i < len(detailRes.Exhibition.ApprovalExhibitions); i++ { artistUIDs = append(artistUIDs, detailRes.Exhibition.ApprovalExhibitions[i].ArtExhibitionDetail.ArtistUID) } bt, err := json.Marshal(&artistUIDs) fmt.Println("========================== send =====================") fmt.Printf("send msg to mq : %+v", artistUIDs) fmt.Println("========================== send =====================") fmt.Println() mq.SendToArtShowPass(bt)*/ return "", nil } func MakeApprovalAndUser(c *gin.Context) { var req api.CreateRequest if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { service.Error(c, e.Error, err) return } userInfo := login.GetUserInfoFromC(c) //提交人 req.SubmitterName = userInfo.NickName req.SubmitterID = userInfo.ID req.ApprovalUsers, req.IsLeader = DepartmentBosses(c, req.DepartmentID, req.SubmitterID) if userInfo.DepartmentName == "管理部" || userInfo.DepartmentName == "人事行政部" { req.IsLeader = true } // start 针对 艺邑 特殊处理 且 只有 oa 申请才是 departmentName := "" if len(userInfo.PositionUsers) == 1 { for i := 0; i < len(userInfo.PositionUsers); i++ { if userInfo.PositionUsers[i].DepartmentName == "艺邑" { departmentName = "艺邑" } } } else if len(userInfo.PositionUsers) > 1 { for i := 0; i < len(userInfo.PositionUsers); i++ { if userInfo.PositionUsers[i].DepartmentId == uint64(req.DepartmentID) && userInfo.PositionUsers[i].DepartmentName == "艺邑" { departmentName = "艺邑" } } } if departmentName == "艺邑" && (oa_model.LeaveApplyMap[req.Type] != "" || oa_model.LeaveBalanceApplyMap[req.Type] != "" || req.Type == oa_model.TypeOutWork || req.Type == oa_model.TypeTurnover || req.Type == oa_model.TypeMakeUp) { req.ApprovalUsers = nil if req.SubmitterName == "董辰琦" { req.IsLeader = true } req.Domain = "out" } // end res, err := service.ApprovalProvider.MakeApprovalAndCopy(context.Background(), &req) if err != nil { service.Error(c, e.Error, err) return } service.Success(c, res) } // Send 批量催办 func ListSend(c *gin.Context) { var req api.ListRequest if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { service.Error(c, e.Error, err) return } userInfo := login.GetUserInfoFromC(c) req.UserID = userInfo.ID nowUserInfo, err := account.GetUserInfoById(c, req.ApprovedBossId, "") if err != nil { service.Error(c, e.Error, err) return } //开始 cacheKey := cache.SendDateOneApprovalMsg(uint(req.ApprovedBossId), req.Title, time.Now().Format(model.DateFormat), uint(req.UserID)) isExist, err := cache.RedisClient.Exists(cacheKey).Result() if err != nil { service.Error(c, e.Error, err) return } if isExist == 1 { service.Error(c, e.Error, errors.New(e.ErrorOVerSendBossMsg)) return } if req.Domain == "" { req.Domain = "all" } res, err := service.ApprovalProvider.MySubmit(c, &req) if err != nil { service.Error(c, e.Error, errors.New(e.GetMsg(e.ErrorSelect))) return } ids := make([]string, 0) for i := 0; i < len(res.Data); i++ { ids = append(ids, strconv.FormatUint(res.Data[i].ID, 10)) } url := fmt.Sprintf("https://erpapi.fontree.cn/approval7524164487E/multiple.html?id=%v&userId=%d", strings.Join(ids, ","), req.ApprovedBossId) devUrl := fmt.Sprintf("http://114.218.158.24:9050/approval7524164487E/multiple.html?id=%v&userId=%d", strings.Join(ids, ","), req.ApprovedBossId) //todo 拉取了dev分支后,这个方法没有 if config.AppMode == "debug" { url = devUrl } else { shortUrl, err := utils.CreateShortUrl(url) if err == nil { url = shortUrl } } msgReq := account2.SendCustomMsgRequest{ ID: req.ApprovedBossId, TelNum: nowUserInfo.TelNum, MId: 136784, SigNo: uint32(config.DefaultSignNo), } //亲爱用户,您有【】审批催办已经发送,请点击查看【】 fmt.Println("发送短信") if err == nil { msgReq.Url = req.Title + "|" + url fmt.Println("发送短信", msgReq) mres, err := service.AccountProvider.SendCustomMsg(c, &msgReq) fmt.Println("发送短信返回", mres, err) } cache.RedisClient.Set(cacheKey, 1, 1*time.Hour) service.Success(c, res) } func ListEx(c *gin.Context) { var list api.ListByID if err := c.ShouldBindBodyWith(&list, binding.JSON); err != nil { service.Error(c, e.Error, err) return } res, err := service.ApprovalProvider.ListApprovalByID(c, &list) if err != nil { service.Error(c, e.Error, err) return } service.Success(c, res) } func SetStatusBatchEx(c *gin.Context) { var setStatusBatchReq vo.SetStatusBatchReq if err := c.ShouldBindBodyWith(&setStatusBatchReq, binding.JSON); err != nil { service.Error(c, e.Error, err) return } if len(setStatusBatchReq.Batch) < 1 { service.Error(c, e.Error, errors.New("当前无审批")) return } for i := 0; i < len(setStatusBatchReq.Batch); i++ { req := api.StatusRequest{} _ = copier.CopyWithOption(&req, setStatusBatchReq.Batch[i], copier.Option{DeepCopy: false}) infoReq := account2.InfoRequest{ID: req.UserId} infoRes, err := service.AccountProvider.Info(context.Background(), &infoReq) if err != nil { service.Error(c, e.Error, errors.New(e.GetMsg(e.ErrorGetUserInfo))) return } if infoRes.Info.ID == 0 || infoRes.Info.NickName == "" || infoRes.Info.Domain == "" { service.Error(c, e.Error, errors.New(e.GetMsg(e.ErrorGetUserInfo))) return } userInfo := login.Info{ ID: req.UserId, NickName: infoRes.Info.NickName, } levelReq := api.NowLevelByInfoRequest{ ApprovalID: req.ID, } levelRes, err := service.ApprovalProvider.NowLevelByInfo(context.Background(), &levelReq) if err != nil { service.Error(c, e.Error, err) return } if req.UserId != levelRes.UserID { service.Error(c, e.Error, errors.New("本次审批人出现错误")) return } req.WorkFlowId = levelRes.ID // 查询 未审批前的审批 beforeApproval := QueryApprovalSetStatusBefore(req.ID) if beforeApproval == nil { service.Error(c, e.Error, errors.New(e.ErrorQueryApprovalContent)) return } _, err = service.ApprovalProvider.SetStatus(context.Background(), &req) if err != nil { service.Error(c, e.Error, err) return } detailReq := api.DetailRequest{ID: req.ID} detail, err := service.ApprovalProvider.Detail(context.Background(), &detailReq) if err != nil { service.Error(c, e.Error, err) return } if detail.TypeName == "任命审批" { StoreBaiduChainApprovalFile(req.ID) } // 审批成功查询用户部门的信息,提交画作服修改画作仓库状态 if detail.TypeName == "画作申请审批" { var ids []int32 for _, tt := range detail.Work.ApprovalWorks { ids = append(ids, int32(tt.ArtworkID)) } fmt.Println("请求画作申请审批", ids) if len(ids) > 0 { err = submitArtwork(req.UserId, ids) if err != nil { service.Error(c, e.Error, err) return } } } // approval 审批状态 同步到 oa 审批 if e.TypeMap[detail.Type] == "oa" { // 查询 审批状态已经 更新的 审批信息 updatedReq := api.DetailRequest{ID: req.ID} updatedDetail, detailErr := service.ApprovalProvider.Detail(context.Background(), &updatedReq) if detailErr != nil { service.Error(c, e.Error, detailErr) return } if req.LeaveBalance != 0 && updatedDetail.ApprovalOA.LeaveApply != nil { //leaveBalance, _ := strconv.ParseFloat(req.LeaveBalance, 10) updatedDetail.ApprovalOA.LeaveApply.LeaveBalance = req.LeaveBalance } _, updateErr := UpdateApprovalStatusToOAStatus(updatedDetail) if updateErr != nil { service.Error(c, e.Error, updateErr) return } } // 画展包审批 if detail.Type == TypeExhibition { err = ExhibitionApproveEnter(beforeApproval, detail) if err != nil { service.Error(c, e.Error, err) return } } // 画展包润格审批 if detail.Type == TypeArtExhibitionReward { err = ExhibitionRewordApproveEnter(beforeApproval, detail) if err != nil { service.Error(c, e.Error, err) return } } // 画展包修改审批 if detail.Type == TypeShowUpdate { err = ShowUpdateApproveEnter(beforeApproval, detail) if err != nil { service.Error(c, e.Error, err) return } } if detail.TypeName == "人员增补申请" { err = postApproveSetStatusEnter(userInfo, beforeApproval) if err != nil { service.Error(c, e.Error, err) return } } if strings.Contains(detail.Type, "employ") { err := offerApproveSetStatusEnter(c, userInfo, &req, detail) if err != nil { service.Error(c, e.Error, err) return } } if detail.Type == "checkIn" && detail.Status == e.ApprovalWorkStatusOk { err = passSendInfoToSiteSignIn(detail.CheckIn) if err != nil { service.Error(c, e.Error, err) return } } } service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Status: e.Ok, }) } func SameApprovalList(c *gin.Context) { var list api.ListRequest if err := c.ShouldBindBodyWith(&list, binding.JSON); err != nil { service.Error(c, e.Error, err) return } userInfo := login.GetUserInfoFromC(c) list.ApprovedBossId = userInfo.ID res, err := service.ApprovalProvider.MyWork(c, &list) if err != nil { service.Error(c, e.Error, err) return } service.Success(c, res) } func SetStatusBatch(c *gin.Context) { //var setStatusBatchReq vo.SetStatusBatchReq setStatusBatchReq := make([]vo.SetStatus, 0) if err := c.ShouldBindBodyWith(&setStatusBatchReq, binding.JSON); err != nil { service.Error(c, e.Error, err) return } fmt.Println("============ 获取 审批 批量 审批 ==============") fmt.Printf("batch %+v\n", setStatusBatchReq) fmt.Println("============ 获取 审批 批量 审批 ==============") if len(setStatusBatchReq) < 1 { service.Error(c, e.Error, errors.New("当前无审批")) return } userInfo := login.GetUserInfoFromC(c) for i := 0; i < len(setStatusBatchReq); i++ { req := api.StatusRequest{} req.Domain = setStatusBatchReq[i].Domain req.ID = setStatusBatchReq[i].ID req.Reply = setStatusBatchReq[i].Reply req.WorkFlowId = setStatusBatchReq[i].WorkFlowId req.Status = setStatusBatchReq[i].Status req.Level = setStatusBatchReq[i].Level req.Title = setStatusBatchReq[i].Title req.UserId = userInfo.ID req.LeaveBalance = setStatusBatchReq[i].LeaveBalance req.Tips = setStatusBatchReq[i].Tips levelReq := api.NowLevelByInfoRequest{ ApprovalID: req.ID, } levelRes, err := service.ApprovalProvider.NowLevelByInfo(context.Background(), &levelReq) if err != nil { service.Error(c, e.Error, err) return } if req.UserId != levelRes.UserID { service.Error(c, e.Error, errors.New("本次审批人出现错误")) return } req.WorkFlowId = levelRes.ID // 查询 未审批前的审批 beforeApproval := QueryApprovalSetStatusBefore(req.ID) if beforeApproval == nil { service.Error(c, e.Error, errors.New(e.ErrorQueryApprovalContent)) return } _, err = service.ApprovalProvider.SetStatus(context.Background(), &req) if err != nil { service.Error(c, e.Error, err) return } detailReq := api.DetailRequest{ID: req.ID} detail, err := service.ApprovalProvider.Detail(context.Background(), &detailReq) if err != nil { service.Error(c, e.Error, err) return } if detail.TypeName == "任命审批" { StoreBaiduChainApprovalFile(req.ID) } // 审批成功查询用户部门的信息,提交画作服修改画作仓库状态 if detail.TypeName == "画作申请审批" { var ids []int32 for _, tt := range detail.Work.ApprovalWorks { ids = append(ids, int32(tt.ArtworkID)) } fmt.Println("请求画作申请审批", ids) if len(ids) > 0 { err = submitArtwork(req.UserId, ids) if err != nil { service.Error(c, e.Error, err) return } } } // approval 审批状态 同步到 oa 审批 if e.TypeMap[detail.Type] == "oa" { // 查询 审批状态已经 更新的 审批信息 updatedReq := api.DetailRequest{ID: req.ID} updatedDetail, detailErr := service.ApprovalProvider.Detail(context.Background(), &updatedReq) if detailErr != nil { service.Error(c, e.Error, detailErr) return } if req.LeaveBalance != 0 && updatedDetail.ApprovalOA.LeaveApply != nil { //leaveBalance, _ := strconv.ParseFloat(req.LeaveBalance, 10) updatedDetail.ApprovalOA.LeaveApply.LeaveBalance = req.LeaveBalance } _, updateErr := UpdateApprovalStatusToOAStatus(updatedDetail) if updateErr != nil { service.Error(c, e.Error, updateErr) return } } // 画展包审批 if detail.Type == TypeExhibition { err = ExhibitionApproveEnter(beforeApproval, detail) if err != nil { service.Error(c, e.Error, err) return } } // 画展包润格审批 if detail.Type == TypeArtExhibitionReward { err = ExhibitionRewordApproveEnter(beforeApproval, detail) if err != nil { service.Error(c, e.Error, err) return } } // 画展包修改审批 if detail.Type == TypeShowUpdate { err = ShowUpdateApproveEnter(beforeApproval, detail) if err != nil { service.Error(c, e.Error, err) return } } if detail.TypeName == "人员增补申请" { err = postApproveSetStatusEnter(userInfo, beforeApproval) if err != nil { service.Error(c, e.Error, err) return } } if strings.Contains(detail.Type, "employ") { err := offerApproveSetStatusEnter(c, userInfo, &req, detail) if err != nil { service.Error(c, e.Error, err) return } } if detail.Type == "checkIn" && detail.Status == e.ApprovalWorkStatusOk { err = passSendInfoToSiteSignIn(detail.CheckIn) if err != nil { service.Error(c, e.Error, err) return } } } service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Status: e.Ok, }) }