package cygx import ( "github.com/beego/beego/v2/client/orm" "hongze/hz_crm_api/utils" "time" ) // 研究员派点 type CygxAllocationCompanyContract struct { AllocationCompanyContractId int `orm:"column(allocation_company_contract_id);pk"` CompanyContractId int `description:"合同id"` CreateTime time.Time `description:"创建时间"` ModifyTime time.Time `description:"更新时间"` AdminId int `description:"操作人ID"` AdminName string `description:"内容"` Proportion float64 `description:"占比"` Money float64 `description:"金额"` RealName string `description:"研究员姓名"` ChartPermissionName string `description:"行业名称"` } // 研究员派点日志 type CygxAllocationCompanyContractLog struct { AllocationCompanyContractId int `orm:"column(allocation_company_contract_id);pk"` CompanyContractId int `description:"合同id"` CreateTime time.Time `description:"创建时间"` ModifyTime time.Time `description:"更新时间"` AdminId int `description:"操作人ID"` AdminName string `description:"内容"` Proportion float64 `description:"占比"` Money float64 `description:"金额"` RealName string `description:"研究员姓名"` ChartPermissionName string `description:"行业名称"` } // 行业派点 type CygxAllocationCompanyContractPermission struct { AllocationCompanyContractId int `orm:"column(allocation_company_contract_id);pk"` CompanyContractId int `description:"合同id"` CreateTime time.Time `description:"创建时间"` ModifyTime time.Time `description:"更新时间"` AdminId int `description:"操作人ID"` AdminName string `description:"内容"` Proportion float64 `description:"占比"` Money float64 `description:"金额"` MoneyAvg float64 `description:"行业所占合同的平均金额"` ChartPermissionName string `description:"行业名称"` } // 行业派点日志 type CygxAllocationCompanyContractPermissionLog struct { AllocationCompanyContractId int `orm:"column(allocation_company_contract_id);pk"` CompanyContractId int `description:"合同id"` CreateTime time.Time `description:"创建时间"` ModifyTime time.Time `description:"更新时间"` AdminId int `description:"操作人ID"` AdminName string `description:"内容"` Proportion float64 `description:"占比"` Money float64 `description:"金额"` MoneyAvg float64 `description:"行业所占合同的平均金额"` ChartPermissionName string `description:"行业名称"` } // 更新派点信息 func AddAndUpdateCygxAllocationCompanyContract(items []*CygxAllocationCompanyContract, itemsPermission []*CygxAllocationCompanyContractPermission, companyContractId int) (err error) { o := orm.NewOrmUsingDB("hz_cygx") to, err := o.Begin() if err != nil { return } defer func() { if err != nil { _ = to.Rollback() } else { _ = to.Commit() } }() //组合研究员派点日志结构体 var itemsLog []*CygxAllocationCompanyContractLog for _, v := range items { item := new(CygxAllocationCompanyContractLog) item.CompanyContractId = v.CompanyContractId item.AdminId = v.AdminId item.CompanyContractId = v.CompanyContractId item.AdminName = v.AdminName item.RealName = v.RealName item.ChartPermissionName = v.ChartPermissionName item.Proportion = v.Proportion item.Money = v.Money item.CreateTime = time.Now() item.ModifyTime = time.Now() itemsLog = append(itemsLog, item) } //组合行业派点日志结构体 var itemsPermissionLog []*CygxAllocationCompanyContractPermissionLog for _, v := range itemsPermission { item := new(CygxAllocationCompanyContractPermissionLog) item.CompanyContractId = v.CompanyContractId item.AdminId = v.AdminId item.CompanyContractId = v.CompanyContractId item.AdminName = v.AdminName item.ChartPermissionName = v.ChartPermissionName item.Proportion = v.Proportion item.Money = v.Money item.MoneyAvg = v.MoneyAvg item.CreateTime = time.Now() item.ModifyTime = time.Now() itemsPermissionLog = append(itemsPermissionLog, item) } //删除原有的研究员派点信息 sql := `DELETE FROM cygx_allocation_company_contract WHERE company_contract_id = ?` _, err = to.Raw(sql, companyContractId).Exec() if err != nil { return } //删除原有的行业派点信息 sql = ` DELETE FROM cygx_allocation_company_contract_permission WHERE company_contract_id = ?` _, err = to.Raw(sql, companyContractId).Exec() if err != nil { return } //批量添加研究员派点信息 _, err = to.InsertMulti(len(items), items) if err != nil { return } _, err = to.InsertMulti(len(itemsLog), itemsLog) if err != nil { return } //批量添加行业派点信息 _, err = to.InsertMulti(len(itemsPermission), itemsPermission) if err != nil { return } _, err = to.InsertMulti(len(itemsPermissionLog), itemsPermissionLog) if err != nil { return } ow := orm.NewOrm() sqlW := `UPDATE company_contract SET is_allocation=1 WHERE company_contract_id=? ` _, err = ow.Raw(sqlW, companyContractId).Exec() return } // 更新派点信息 func AddAndUpdateCygxAllocationCompanyContractRai(items []*CygxAllocationCompanyContract, itemsPermission []*CygxAllocationCompanyContractPermission, companyContractId []int) (err error) { o := orm.NewOrmUsingDB("hz_cygx") to, err := o.Begin() if err != nil { return } defer func() { if err != nil { _ = to.Rollback() } else { _ = to.Commit() } }() //组合研究员派点日志结构体 var itemsLog []*CygxAllocationCompanyContractLog for _, v := range items { item := new(CygxAllocationCompanyContractLog) item.CompanyContractId = v.CompanyContractId item.AdminId = v.AdminId item.CompanyContractId = v.CompanyContractId item.AdminName = v.AdminName item.RealName = v.RealName item.ChartPermissionName = v.ChartPermissionName item.Proportion = v.Proportion item.Money = v.Money item.CreateTime = time.Now() item.ModifyTime = time.Now() itemsLog = append(itemsLog, item) } //组合行业派点日志结构体 var itemsPermissionLog []*CygxAllocationCompanyContractPermissionLog for _, v := range itemsPermission { item := new(CygxAllocationCompanyContractPermissionLog) item.CompanyContractId = v.CompanyContractId item.AdminId = v.AdminId item.CompanyContractId = v.CompanyContractId item.AdminName = v.AdminName item.ChartPermissionName = v.ChartPermissionName item.Proportion = v.Proportion item.Money = v.Money item.MoneyAvg = v.MoneyAvg item.CreateTime = time.Now() item.ModifyTime = time.Now() itemsPermissionLog = append(itemsPermissionLog, item) } lenIds := len(companyContractId) //删除原有的研究员派点信息 sql := `DELETE FROM cygx_allocation_company_contract WHERE company_contract_id IN (` + utils.GetOrmInReplace(lenIds) + `)` _, err = to.Raw(sql, companyContractId).Exec() if err != nil { return } //删除原有的行业派点信息 sql = ` DELETE FROM cygx_allocation_company_contract_permission WHERE company_contract_id IN (` + utils.GetOrmInReplace(lenIds) + `)` _, err = to.Raw(sql, companyContractId).Exec() if err != nil { return } //批量添加研究员派点信息 _, err = to.InsertMulti(len(items), items) if err != nil { return } _, err = to.InsertMulti(len(itemsLog), itemsLog) if err != nil { return } //批量添加行业派点信息 _, err = to.InsertMulti(len(itemsPermission), itemsPermission) if err != nil { return } _, err = to.InsertMulti(len(itemsPermissionLog), itemsPermissionLog) if err != nil { return } ow := orm.NewOrm() sqlW := `UPDATE company_contract SET is_allocation=1 ,allocation_type = 1 WHERE company_contract_id IN (` + utils.GetOrmInReplace(lenIds) + `)` _, err = ow.Raw(sqlW, companyContractId).Exec() return } type UpdateAllocationCompanyContractReq struct { CompanyContractId int `description:"合同ID"` List []*AllocationPermissionListResp } type CygxAllocationCompanyContractDetailResp struct { CompanyContractId int `description:"合同ID"` Money float64 `description:"金额(单位万)"` TotalPointsContent string `description:"总点数描述"` IsGray bool `description:"是否置灰"` IsXClass bool `description:"是否是X类试用客户"` AllocationType int `description:"分配方式,0手动分配,1X录分之后自动分配,默认0"` List []*AllocationPermissionListResp } // 行业 type AllocationPermissionListResp struct { ChartPermissionName string `description:"行业名称"` ChartPermissionId int `description:"行业id"` Proportion float64 `description:"占比"` Money float64 `description:"金额(单位万)"` MoneyAvg float64 `description:"行业所占合同的平均金额"` CompanyContractId int `description:"合同ID"` List []*AllocationRealNameListResp } // 行业 type AllocationRealNameListResp struct { RealName string `description:"研究员姓名"` Proportion float64 `description:"占比"` Money float64 `description:"金额(单位万)"` ChartPermissionId int `description:"行业id"` } // 获取数量 func GetCygxAllocationCompanyContractCountByCompanyContractId(companyContractId int) (count int, err error) { o := orm.NewOrmUsingDB("hz_cygx") sqlCount := ` SELECT COUNT(1) AS count FROM cygx_allocation_company_contract WHERE company_contract_id = ? ` err = o.Raw(sqlCount, companyContractId).QueryRow(&count) return } // 研究员列表 func GetCygxAllocationCompanyContractListById(companyContractId int) (items []*CygxAllocationCompanyContract, err error) { o := orm.NewOrmUsingDB("hz_cygx") sql := `SELECT * FROM cygx_allocation_company_contract WHERE company_contract_id = ? ` _, err = o.Raw(sql, companyContractId).QueryRows(&items) return } // 研究员列表 func GetCygxAllocationCompanyContractList(condition string, pars []interface{}) (items []*CygxAllocationCompanyContract, err error) { o := orm.NewOrmUsingDB("hz_cygx") sql := `SELECT * FROM cygx_allocation_company_contract as art WHERE 1= 1 ` if condition != "" { sql += condition } _, err = o.Raw(sql, pars).QueryRows(&items) return } // 行业列表 func GetCygxAllocationCompanyContractPermissionListById(companyContractId int) (items []*AllocationPermissionListResp, err error) { o := orm.NewOrmUsingDB("hz_cygx") sql := ` SELECT * FROM cygx_allocation_company_contract_permission WHERE company_contract_id = ? ` _, err = o.Raw(sql, companyContractId).QueryRows(&items) return } // 行业列表 func GetCygxAllocationCompanyContractPermissionList(condition string, pars []interface{}) (items []*AllocationPermissionListResp, err error) { o := orm.NewOrmUsingDB("hz_cygx") sql := ` SELECT * FROM cygx_allocation_company_contract_permission as art WHERE 1= 1 ` if condition != "" { sql += condition } _, err = o.Raw(sql, pars).QueryRows(&items) return } type CygxAllocationCompanyContractDetailStatisticsResp struct { List []*AllocationPermissionStatisticsListResp TotalContract int `description:"关联合同总计"` TotalMoney float64 `description:"总派点总计"` } // 行业 type AllocationPermissionStatisticsListResp struct { ChartPermissionName string `description:"行业名称"` List []*AllocationRealNameStatisticsListResp } // 行业 type AllocationRealNameStatisticsListResp struct { RealName string `description:"研究员姓名"` TotalRelatedContract float64 `description:"关联合同"` TotalDispatchPoint string `description:"总派点"` GroupProportion string `description:"组内占比"` DepartmentProportion string `description:"部门占比"` } // 行业列表 func GetCygxAllocationCompanyContractPermissionListByIdInitYx(companyContractId int) (items []*CygxAllocationCompanyContractPermission, err error) { o := orm.NewOrmUsingDB("hz_cygx") sql := ` SELECT * FROM cygx_allocation_company_contract_permission WHERE company_contract_id = ? AND chart_permission_name IN ('研选扣点包','研选订阅','买方研选') ` _, err = o.Raw(sql, companyContractId).QueryRows(&items) return } // 行业列表 func GetCygxAllocationCompanyContractPermissionListByIdInit(companyContractId int) (items []*CygxAllocationCompanyContractPermission, err error) { o := orm.NewOrmUsingDB("hz_cygx") sql := ` SELECT * FROM cygx_allocation_company_contract_permission WHERE company_contract_id = ? ` _, err = o.Raw(sql, companyContractId).QueryRows(&items) return } // 更新派点信息 func AddAndUpdateCygxAllocationCompanyContractInit(items []*CygxAllocationCompanyContract, itemsPermission []*CygxAllocationCompanyContractPermission, companyContractId int) (err error) { o := orm.NewOrmUsingDB("hz_cygx") to, err := o.Begin() if err != nil { return } defer func() { if err != nil { _ = to.Rollback() } else { _ = to.Commit() } }() //删除原有的研究员派点信息 sql := `DELETE FROM cygx_allocation_company_contract WHERE company_contract_id = ? AND chart_permission_name IN ('研选扣点包','研选订阅','买方研选') ` _, err = to.Raw(sql, companyContractId).Exec() if err != nil { return } //删除原有的行业派点信息 sql = ` DELETE FROM cygx_allocation_company_contract_permission WHERE company_contract_id = ? AND chart_permission_name IN ('研选扣点包','研选订阅','买方研选') ` _, err = to.Raw(sql, companyContractId).Exec() if err != nil { return } //批量添加研究员派点信息 _, err = to.InsertMulti(len(items), items) if err != nil { return } //批量添加行业派点信息 _, err = to.InsertMulti(len(itemsPermission), itemsPermission) if err != nil { return } return } // 修改 func Cygx_allocation_company_contractEdit(proportion float64, allocation_company_contract_id int) (err error) { o := orm.NewOrmUsingDB("hz_cygx") sql := `UPDATE cygx_allocation_company_contract SET proportion =? WHERE allocation_company_contract_id=? ` _, err = o.Raw(sql, proportion, allocation_company_contract_id).Exec() return } // 修改 func Cygx_allocation_company_contract_permissionEdit(proportion, moneyAvg float64, allocation_company_contract_id int) (err error) { o := orm.NewOrmUsingDB("hz_cygx") sql := `UPDATE cygx_allocation_company_contract_permission SET proportion =?,money_avg = ? WHERE allocation_company_contract_id=? ` _, err = o.Raw(sql, proportion, moneyAvg, allocation_company_contract_id).Exec() return }