package company_contract import ( "errors" "fmt" "hongze/hongze_task/models" "hongze/hongze_task/models/company" "hongze/hongze_task/models/company_approval" "hongze/hongze_task/models/company_contract" "hongze/hongze_task/utils" "strings" "time" ) //合同处理 func HandleCompanyContract() (err error) { defer func() { if err != nil { //fmt.Println("合同处理 ErrMsg:"+err.Error()) go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "合同处理 ErrMsg:"+err.Error(), utils.EmailSendToUsers) } }() today := utils.GetToday(utils.FormatDate) total,list,err := company_contract.GetStartContractListByStartDate(today) if err != nil { fmt.Println("HandleCompanyContract Err:" + err.Error()) utils.FileLog.Info("HandleCompanyContract Err:%s" + err.Error()) return } fmt.Sprintln("总共d%条数据待处理",total) errorList := make([]string,0) for _, v := range list { //fmt.Println(k, v.CompanyId) //fmt.Println(v) companyApproval,err := company_approval.GetCompanyApprovalByCompanyContractId(v.CompanyContractId) if err != nil { errorList = append(errorList,fmt.Sprint("合同id:",v.CompanyContractId,";err:",err)) continue } if companyApproval == nil{ errorList = append(errorList,fmt.Sprint("合同id:",v.CompanyContractId,";找不到对应的审批单")) continue } companyProduct,err := models.GetCompanyProduct(v.CompanyId,v.ProductId) if err != nil { errorList = append(errorList,fmt.Sprint("合同id:",v.CompanyContractId,";寻找客户产品时异常 err:",err)) continue } //companyProduct.EndDate //格式化客户当前产品结束日期 companyProductEndDate, err := time.Parse(utils.FormatDate, companyProduct.EndDate) if err != nil { errorList = append(errorList,fmt.Sprint("合同id:",v.CompanyContractId,";格式化客户当前产品结束时间时异常 err:",err)) continue } //格式化合同结束日期 contractEndDate, err := time.Parse(utils.FormatDate, v.EndDate) if err != nil { errorList = append(errorList,fmt.Sprint("合同id:",v.CompanyContractId,";格式化合同结束日期时异常 err:",err)) continue } //如果 合同结束日期 小于 客户当前产品结束日期,那么不执行合同内容 if contractEndDate.Before(companyProductEndDate) { errorList = append(errorList,fmt.Sprint("合同id:",v.CompanyContractId,";合同结束日期 小于 客户当前产品结束日期,不执行该合同内容")) continue } //申请类型:1:试用->正式,2:冻结—>试用,3:试用延期,4:原销售申请领取流失客户,5:正式客户申请服务更新 switch companyApproval.ApplyMethod { case 1: company.TryOutToFormal(v.CompanyId, v.ProductId, utils.AdminId, v.CompanyContractId, v.StartDate, v.EndDate, utils.RealName, v.ProductName) case 5: company.ApplyServiceUpdate(v.CompanyId, v.ProductId, utils.AdminId, v.CompanyContractId, v.StartDate, v.EndDate, utils.RealName, v.ProductName) default: errorList = append(errorList,fmt.Sprint("合同id:",v.CompanyContractId,";审批单类型异常")) continue } } //错误信息,批量返回错误信息 if len(errorList) >0 { err = errors.New(strings.Join(errorList,";")) } return }