|
@@ -12,6 +12,7 @@ import (
|
|
"hongze/hz_crm_api/models/system"
|
|
"hongze/hz_crm_api/models/system"
|
|
cygxService "hongze/hz_crm_api/services/cygx"
|
|
cygxService "hongze/hz_crm_api/services/cygx"
|
|
"hongze/hz_crm_api/utils"
|
|
"hongze/hz_crm_api/utils"
|
|
|
|
+ "math"
|
|
"strconv"
|
|
"strconv"
|
|
"strings"
|
|
"strings"
|
|
"time"
|
|
"time"
|
|
@@ -417,7 +418,7 @@ func (this *ContractAllocationController) CompanyContracDetail() {
|
|
resp.Money = resp.Money - moneyYx
|
|
resp.Money = resp.Money - moneyYx
|
|
respItemYx.Proportion = moneyYx
|
|
respItemYx.Proportion = moneyYx
|
|
respItemYx.ChartPermissionName = utils.CHART_PERMISSION_NAME_MF_YANXUAN
|
|
respItemYx.ChartPermissionName = utils.CHART_PERMISSION_NAME_MF_YANXUAN
|
|
- respItemYx.List = append(respItemYx.List, &cygx.AllocationRealNameListResp{utils.CHART_PERMISSION_NAME_MF_YANXUAN, 0, 0})
|
|
|
|
|
|
+ respItemYx.List = append(respItemYx.List, &cygx.AllocationRealNameListResp{utils.CHART_PERMISSION_NAME_MF_YANXUAN, 0, moneyYx})
|
|
} else {
|
|
} else {
|
|
resp.TotalPointsContent = fmt.Sprint(resp.Money, "W")
|
|
resp.TotalPointsContent = fmt.Sprint(resp.Money, "W")
|
|
}
|
|
}
|
|
@@ -460,7 +461,7 @@ func (this *ContractAllocationController) CompanyContracDetail() {
|
|
return
|
|
return
|
|
}
|
|
}
|
|
for _, v := range listUser {
|
|
for _, v := range listUser {
|
|
- if showDetail && v.Proportion == 0 {
|
|
|
|
|
|
+ if showDetail && v.Money == 0 {
|
|
continue
|
|
continue
|
|
}
|
|
}
|
|
item := new(cygx.AllocationRealNameListResp)
|
|
item := new(cygx.AllocationRealNameListResp)
|
|
@@ -476,7 +477,7 @@ func (this *ContractAllocationController) CompanyContracDetail() {
|
|
return
|
|
return
|
|
}
|
|
}
|
|
for _, v := range listPermission {
|
|
for _, v := range listPermission {
|
|
- if showDetail && v.Proportion == 0 {
|
|
|
|
|
|
+ if showDetail && v.Money == 0 {
|
|
continue
|
|
continue
|
|
}
|
|
}
|
|
respItem := new(cygx.AllocationPermissionListResp)
|
|
respItem := new(cygx.AllocationPermissionListResp)
|
|
@@ -533,13 +534,56 @@ func (this *ContractAllocationController) CompanyContracUpdate() {
|
|
br.ErrMsg = "获取合同信息失败,Err:" + err.Error()
|
|
br.ErrMsg = "获取合同信息失败,Err:" + err.Error()
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
+ money := contractItem.Money / 10000 // 合同金额,万为单位
|
|
|
|
+ var moneyAvg float64 // 行业所占合同的平均金额
|
|
|
|
+ hasPermissions, e := company.GetCompanyContractPermissionByCompanyContractId(companyContractId)
|
|
|
|
+ if e != nil {
|
|
|
|
+ br.Msg = "获取失败"
|
|
|
|
+ br.ErrMsg = "获取合同权限信息失败,Err:" + e.Error()
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
|
|
- fmt.Println(contractItem.CompanyContractId)
|
|
|
|
|
|
+ hasMap := make(map[int]*company.CompanyContractPermission)
|
|
|
|
+ for _, p := range hasPermissions {
|
|
|
|
+ hasMap[p.ChartPermissionId] = p
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ raiPermissions, e := company.GetPermissionLookItemsExt("2", utils.COMPANY_PRODUCT_RAI_NAME)
|
|
|
|
+ if e != nil {
|
|
|
|
+ br.Msg = "获取失败"
|
|
|
|
+ br.ErrMsg = "获取权益权限列表失败, Err: " + e.Error()
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ mapPermissionNameHave := make(map[string]bool) // 判断合同是否存在某一行业权限种类
|
|
|
|
+ for _, n := range raiPermissions {
|
|
|
|
+ //只计算,医药、消费、科技、智造、策略、买方研选的
|
|
|
|
+ if n.PermissionName != utils.YI_YAO_NAME && n.PermissionName != utils.XIAO_FEI_NAME && n.PermissionName != utils.KE_JI_NAME && n.PermissionName != utils.ZHI_ZAO_NAME && n.PermissionName != utils.CE_LUE_NAME && n.PermissionName != utils.CHART_PERMISSION_NAME_MF_YANXUAN {
|
|
|
|
+ continue
|
|
|
|
+ }
|
|
|
|
+ match := hasMap[n.ChartPermissionId]
|
|
|
|
+ if match == nil {
|
|
|
|
+ continue
|
|
|
|
+ }
|
|
|
|
+ mapPermissionNameHave[n.PermissionName] = true
|
|
|
|
+ // 买方研选(3w/5w)
|
|
|
|
+ if n.PermissionName == utils.CHART_PERMISSION_NAME_MF_YANXUAN {
|
|
|
|
+ if match.ExpensiveYx == 1 {
|
|
|
|
+ money = money - 5
|
|
|
|
+ } else {
|
|
|
|
+ money = money - 3
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if len(mapPermissionNameHave) > 0 {
|
|
|
|
+ moneyAvg = money / float64(len(mapPermissionNameHave))
|
|
|
|
+ }
|
|
|
|
|
|
list := req.List
|
|
list := req.List
|
|
var items []*cygx.CygxAllocationCompanyContract
|
|
var items []*cygx.CygxAllocationCompanyContract
|
|
var itemsPermission []*cygx.CygxAllocationCompanyContractPermission
|
|
var itemsPermission []*cygx.CygxAllocationCompanyContractPermission
|
|
|
|
|
|
|
|
+ var proportionSum float64 // 校验前端传过来的占比使用
|
|
for _, v := range list {
|
|
for _, v := range list {
|
|
itemPermission := new(cygx.CygxAllocationCompanyContractPermission)
|
|
itemPermission := new(cygx.CygxAllocationCompanyContractPermission)
|
|
itemPermission.CompanyContractId = companyContractId
|
|
itemPermission.CompanyContractId = companyContractId
|
|
@@ -547,6 +591,7 @@ func (this *ContractAllocationController) CompanyContracUpdate() {
|
|
itemPermission.AdminName = sysUser.RealName
|
|
itemPermission.AdminName = sysUser.RealName
|
|
itemPermission.Proportion = v.Proportion
|
|
itemPermission.Proportion = v.Proportion
|
|
itemPermission.Money = v.Money
|
|
itemPermission.Money = v.Money
|
|
|
|
+ itemPermission.MoneyAvg = moneyAvg
|
|
itemPermission.ChartPermissionName = v.ChartPermissionName
|
|
itemPermission.ChartPermissionName = v.ChartPermissionName
|
|
itemPermission.CreateTime = time.Now()
|
|
itemPermission.CreateTime = time.Now()
|
|
itemPermission.ModifyTime = time.Now()
|
|
itemPermission.ModifyTime = time.Now()
|
|
@@ -565,6 +610,16 @@ func (this *ContractAllocationController) CompanyContracUpdate() {
|
|
item.ModifyTime = time.Now()
|
|
item.ModifyTime = time.Now()
|
|
items = append(items, item)
|
|
items = append(items, item)
|
|
}
|
|
}
|
|
|
|
+ if v.ChartPermissionName == utils.CHART_PERMISSION_NAME_MF_YANXUAN {
|
|
|
|
+ continue
|
|
|
|
+ }
|
|
|
|
+ proportionSum += v.Proportion
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if proportionSum > 100.5 || proportionSum < 99.5 {
|
|
|
|
+ br.Msg = "操作失败,派点填写信息错误"
|
|
|
|
+ br.ErrMsg = "获取合同信息失败,Err:" + fmt.Sprint(proportionSum)
|
|
|
|
+ return
|
|
}
|
|
}
|
|
|
|
|
|
err = cygx.AddAndUpdateCygxAllocationCompanyContract(items, itemsPermission, companyContractId)
|
|
err = cygx.AddAndUpdateCygxAllocationCompanyContract(items, itemsPermission, companyContractId)
|
|
@@ -631,7 +686,7 @@ func (this *ContractAllocationController) CompanyContractStatistics() {
|
|
|
|
|
|
//默认只查询权益 2023-06-01 之后的合同
|
|
//默认只查询权益 2023-06-01 之后的合同
|
|
condition += ` AND c.product_id = ? AND a.start_date > ? `
|
|
condition += ` AND c.product_id = ? AND a.start_date > ? `
|
|
- pars = append(pars, 2, "2023-06-01")
|
|
|
|
|
|
+ pars = append(pars, 2, "2023-01-01")
|
|
|
|
|
|
//列表页数据
|
|
//列表页数据
|
|
listContract, err := cygx.GetCompanyContractListJoinCompany(condition, pars, 0, 1000)
|
|
listContract, err := cygx.GetCompanyContractListJoinCompany(condition, pars, 0, 1000)
|
|
@@ -650,19 +705,27 @@ func (this *ContractAllocationController) CompanyContractStatistics() {
|
|
mapUserMoney := make(map[string]float64) // 派点金额
|
|
mapUserMoney := make(map[string]float64) // 派点金额
|
|
mapPermissionAllocation := make(map[string]float64)
|
|
mapPermissionAllocation := make(map[string]float64)
|
|
mapPermissionMoney := make(map[string]float64)
|
|
mapPermissionMoney := make(map[string]float64)
|
|
|
|
+ mapPermissionMoneyAvg := make(map[string]float64)
|
|
|
|
|
|
totalContract := lenArr //所有的关联合同
|
|
totalContract := lenArr //所有的关联合同
|
|
var totalMoney float64 //所有的关联合同的金额 单位万
|
|
var totalMoney float64 //所有的关联合同的金额 单位万
|
|
if lenArr > 0 {
|
|
if lenArr > 0 {
|
|
var conditionAllocation string
|
|
var conditionAllocation string
|
|
var parsAllocation []interface{}
|
|
var parsAllocation []interface{}
|
|
|
|
+ conditionAllocation = ` AND company_contract_id IN(` + utils.GetOrmInReplace(lenArr) + ` ) `
|
|
|
|
+ parsAllocation = append(parsAllocation, companyContractIds)
|
|
allocationCompanyContractList, err := cygx.GetCygxAllocationCompanyContractList(conditionAllocation, parsAllocation)
|
|
allocationCompanyContractList, err := cygx.GetCygxAllocationCompanyContractList(conditionAllocation, parsAllocation)
|
|
if err != nil {
|
|
if err != nil {
|
|
br.Msg = "获取失败"
|
|
br.Msg = "获取失败"
|
|
br.ErrMsg = "获取失败,Err:" + err.Error()
|
|
br.ErrMsg = "获取失败,Err:" + err.Error()
|
|
return
|
|
return
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+ allocationCompanyContractPermissionList, err := cygx.GetCygxAllocationCompanyContractPermissionList(conditionAllocation, parsAllocation)
|
|
|
|
+ if err != nil {
|
|
|
|
+ br.Msg = "获取失败"
|
|
|
|
+ br.ErrMsg = "获取失败,Err:" + err.Error()
|
|
|
|
+ return
|
|
|
|
+ }
|
|
for _, v := range allocationCompanyContractList {
|
|
for _, v := range allocationCompanyContractList {
|
|
if v.Proportion != 0 {
|
|
if v.Proportion != 0 {
|
|
mapUserAllocation[v.RealName] += 1
|
|
mapUserAllocation[v.RealName] += 1
|
|
@@ -673,6 +736,9 @@ func (this *ContractAllocationController) CompanyContractStatistics() {
|
|
totalMoney += v.Money
|
|
totalMoney += v.Money
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ for _, v := range allocationCompanyContractPermissionList {
|
|
|
|
+ mapPermissionMoneyAvg[v.ChartPermissionName] += v.MoneyAvg
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
sysUserList, err := cygx.GetAskEmailList()
|
|
sysUserList, err := cygx.GetAskEmailList()
|
|
@@ -693,19 +759,24 @@ func (this *ContractAllocationController) CompanyContractStatistics() {
|
|
item.TotalDispatchPoint = "0"
|
|
item.TotalDispatchPoint = "0"
|
|
}
|
|
}
|
|
//组内占比
|
|
//组内占比
|
|
- item.GroupProportion = fmt.Sprint(mapUserMoney[v.Name] / mapPermissionMoney[v.ChartPermissionName] * 100)
|
|
|
|
|
|
+ //utils.SubFloatToString(val, 4)
|
|
|
|
+ //item.GroupProportion = fmt.Sprint(mapUserMoney[v.Name] / mapPermissionMoney[v.ChartPermissionName] * 100)
|
|
|
|
+ if mapUserMoney[v.Name] == 0 {
|
|
|
|
+ item.GroupProportion = ""
|
|
|
|
+ } else {
|
|
|
|
+ item.GroupProportion = utils.SubFloatToString(mapUserMoney[v.Name]/mapPermissionMoney[v.ChartPermissionName]*100, 2)
|
|
|
|
+ }
|
|
if item.GroupProportion == "" {
|
|
if item.GroupProportion == "" {
|
|
item.GroupProportion = "0"
|
|
item.GroupProportion = "0"
|
|
}
|
|
}
|
|
item.GroupProportion += "%"
|
|
item.GroupProportion += "%"
|
|
|
|
|
|
//部门占比
|
|
//部门占比
|
|
- item.DepartmentProportion = fmt.Sprint(mapUserMoney[v.Name] / totalMoney * 100)
|
|
|
|
|
|
+ item.DepartmentProportion = utils.SubFloatToString(mapUserMoney[v.Name]/totalMoney*100, 2)
|
|
if item.DepartmentProportion == "" {
|
|
if item.DepartmentProportion == "" {
|
|
item.DepartmentProportion = "0"
|
|
item.DepartmentProportion = "0"
|
|
}
|
|
}
|
|
item.DepartmentProportion += "%"
|
|
item.DepartmentProportion += "%"
|
|
-
|
|
|
|
mapPermissionUser[v.ChartPermissionName] = append(mapPermissionUser[v.ChartPermissionName], item)
|
|
mapPermissionUser[v.ChartPermissionName] = append(mapPermissionUser[v.ChartPermissionName], item)
|
|
}
|
|
}
|
|
|
|
|
|
@@ -714,45 +785,46 @@ func (this *ContractAllocationController) CompanyContractStatistics() {
|
|
item := new(cygx.AllocationRealNameStatisticsListResp)
|
|
item := new(cygx.AllocationRealNameStatisticsListResp)
|
|
item.RealName = "合计"
|
|
item.RealName = "合计"
|
|
item.TotalRelatedContract = mapPermissionAllocation[k]
|
|
item.TotalRelatedContract = mapPermissionAllocation[k]
|
|
-
|
|
|
|
- item.TotalDispatchPoint = fmt.Sprint(mapPermissionMoney[k], "/", "300")
|
|
|
|
|
|
+ item.TotalDispatchPoint = fmt.Sprint(mapPermissionMoney[k], "/", mapPermissionMoneyAvg[k])
|
|
item.GroupProportion = "100%"
|
|
item.GroupProportion = "100%"
|
|
|
|
|
|
// 部门占比
|
|
// 部门占比
|
|
- item.DepartmentProportion = fmt.Sprint(mapPermissionMoney[k] / totalMoney * 100)
|
|
|
|
|
|
+ item.DepartmentProportion = utils.SubFloatToString(mapPermissionMoney[k]/totalMoney*100, 2)
|
|
if item.DepartmentProportion == "" {
|
|
if item.DepartmentProportion == "" {
|
|
item.DepartmentProportion = "0"
|
|
item.DepartmentProportion = "0"
|
|
}
|
|
}
|
|
item.DepartmentProportion += "%"
|
|
item.DepartmentProportion += "%"
|
|
|
|
|
|
mapPermissionUser[k] = append(mapPermissionUser[k], item)
|
|
mapPermissionUser[k] = append(mapPermissionUser[k], item)
|
|
-
|
|
|
|
|
|
+ var ratio float64 // 使用一个变量作为精度范围, 比如 2 位小数时,精度范围应该为 100
|
|
|
|
+ ratio = math.Pow(10, 2) // 计算精度范围,2 位小数 = 100
|
|
item = new(cygx.AllocationRealNameStatisticsListResp)
|
|
item = new(cygx.AllocationRealNameStatisticsListResp)
|
|
item.RealName = "平均"
|
|
item.RealName = "平均"
|
|
- item.TotalRelatedContract = mapPermissionAllocation[k] / float64(lenUser)
|
|
|
|
- item.TotalDispatchPoint = fmt.Sprint(mapPermissionMoney[k] / float64(lenUser))
|
|
|
|
|
|
+ item.TotalRelatedContract = math.Round(mapPermissionAllocation[k]/float64(lenUser)) * ratio / ratio
|
|
|
|
+ item.TotalDispatchPoint = utils.SubFloatToString(mapPermissionMoney[k]/float64(lenUser), 2)
|
|
|
|
|
|
//组内占比
|
|
//组内占比
|
|
- item.GroupProportion = fmt.Sprint(float64(lenUser) / mapPermissionMoney[k] * 100)
|
|
|
|
|
|
+ if mapPermissionMoney[k] == 0 {
|
|
|
|
+ item.GroupProportion = ""
|
|
|
|
+ } else {
|
|
|
|
+ item.GroupProportion = utils.SubFloatToString(float64(lenUser)/mapPermissionMoney[k]*100, 2)
|
|
|
|
+ }
|
|
if item.GroupProportion == "" {
|
|
if item.GroupProportion == "" {
|
|
item.GroupProportion = "0"
|
|
item.GroupProportion = "0"
|
|
}
|
|
}
|
|
item.GroupProportion += "%"
|
|
item.GroupProportion += "%"
|
|
|
|
|
|
// 部门占比
|
|
// 部门占比
|
|
- item.DepartmentProportion = fmt.Sprint(mapPermissionMoney[k] / totalMoney * 100 / float64(len(mapPermissionUser[k])))
|
|
|
|
|
|
+ item.DepartmentProportion = utils.SubFloatToString(mapPermissionMoney[k]/totalMoney*100/float64(len(mapPermissionUser[k])), 2)
|
|
if item.DepartmentProportion == "" {
|
|
if item.DepartmentProportion == "" {
|
|
item.DepartmentProportion = "0"
|
|
item.DepartmentProportion = "0"
|
|
}
|
|
}
|
|
item.DepartmentProportion += "%"
|
|
item.DepartmentProportion += "%"
|
|
-
|
|
|
|
mapPermissionUser[k] = append(mapPermissionUser[k], item)
|
|
mapPermissionUser[k] = append(mapPermissionUser[k], item)
|
|
}
|
|
}
|
|
|
|
|
|
var list []*cygx.AllocationPermissionStatisticsListResp
|
|
var list []*cygx.AllocationPermissionStatisticsListResp
|
|
-
|
|
|
|
permissionNameArr := []string{"医药", "消费", "科技", "智造", "策略"}
|
|
permissionNameArr := []string{"医药", "消费", "科技", "智造", "策略"}
|
|
-
|
|
|
|
for _, v := range permissionNameArr {
|
|
for _, v := range permissionNameArr {
|
|
item := new(cygx.AllocationPermissionStatisticsListResp)
|
|
item := new(cygx.AllocationPermissionStatisticsListResp)
|
|
item.ChartPermissionName = v
|
|
item.ChartPermissionName = v
|