xingzai 1 vuosi sitten
vanhempi
commit
60d090b3c9

+ 377 - 23
controllers/cygx/contract_allocation.go

@@ -1,6 +1,7 @@
 package cygx
 
 import (
+	"encoding/json"
 	"fmt"
 	"github.com/rdlucklib/rdluck_tools/paging"
 	"hongze/hz_crm_api/controllers"
@@ -9,7 +10,6 @@ import (
 	"hongze/hz_crm_api/models/contract"
 	"hongze/hz_crm_api/models/cygx"
 	"hongze/hz_crm_api/models/system"
-	contractService "hongze/hz_crm_api/services/contract"
 	"hongze/hz_crm_api/utils"
 	"strconv"
 	"strings"
@@ -273,9 +273,10 @@ func (this *ContractAllocationController) CompanyContractList() {
 // @Title  详情
 // @Description 获取详情接口
 // @Param   CompanyContractId   query   int  true       "ID"
+// @Param   ShowDetail   query   bool  false      "是否是派点详情展示"
 // @Success Ret=200 {object} cygx.CygxAllocationCompanyContractDetailResp
 // @router /allocation/detail [get]
-func (this *ContractAllocationController) Detail() {
+func (this *ContractAllocationController) CompanyContracDetail() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
 		this.Data["json"] = br
@@ -294,6 +295,7 @@ func (this *ContractAllocationController) Detail() {
 		br.Msg = "请输入详情ID"
 		return
 	}
+	showDetail, _ := this.GetBool("ShowDetail", false)
 	contractItem, err := company.GetCompanyContractById(companyContractId)
 	if err != nil {
 		br.Msg = "获取信息失败"
@@ -307,15 +309,12 @@ func (this *ContractAllocationController) Detail() {
 		return
 	}
 
-	if total == 0 {
-
-	}
-	var contractPermissionList []*company.ContractPermissionList
+	//var contractPermissionList []*company.ContractPermissionList
 	expMap := map[int]string{0: "(3w)", 1: "(5w)"} // 买方研选价格
 
 	//classifyName := "权益"
-	checkList := make([]int, 0)
-	plist := new(company.ContractPermissionList)
+
+	//plist := new(company.ContractPermissionList)
 	hasPermissions, e := company.GetCompanyContractPermissionByCompanyContractId(companyContractId)
 	if e != nil {
 		br.Msg = "获取失败"
@@ -334,7 +333,8 @@ func (this *ContractAllocationController) Detail() {
 		br.ErrMsg = "获取权益权限列表失败, Err: " + e.Error()
 		return
 	}
-
+	mapPermissionNameHave := make(map[string]bool) // 判断合同是否存在某一行业权限种类
+	var expensiveYx int
 	for _, n := range raiPermissions {
 		match := hasMap[n.ChartPermissionId]
 		if match == nil {
@@ -343,36 +343,390 @@ func (this *ContractAllocationController) Detail() {
 		// 升级
 		if match.IsUpgrade == 1 {
 			n.IsUpgrade = 1
-			checkList = append(checkList, n.ChartPermissionId)
 			checkItems = append(checkItems, n)
 			continue
 		}
+		mapPermissionNameHave[n.PermissionName] = true
 		// 买方研选(3w/5w)
 		if n.PermissionName == utils.CHART_PERMISSION_NAME_MF_YANXUAN {
+			expensiveYx = match.ExpensiveYx
 			n.PermissionName += expMap[match.ExpensiveYx]
-			checkList = append(checkList, n.ChartPermissionId)
 			checkItems = append(checkItems, n)
 			continue
 		}
-		checkList = append(checkList, n.ChartPermissionId)
 		checkItems = append(checkItems, n)
 	}
-	plist.Items = checkItems
-	plist.ClassifyName = utils.COMPANY_PRODUCT_RAI_NAME
-	plist.CheckList = checkList
-	contractPermissionList = append(contractPermissionList, plist)
+	//plist.Items = checkItems
+	//plist.ClassifyName = utils.COMPANY_PRODUCT_RAI_NAME
+	//contractPermissionList = append(contractPermissionList, plist)
+
+	//// CRM8.8-权限主客观合并
+	//newPermissionLookList := contractService.HandleEquityContractPermissionList(contractPermissionList)
+	//for _, v := range newPermissionLookList {
+	//	for _, v2 := range v.Items {
+	//		fmt.Println(v2.PermissionName)
+	//	}
+	//}
 
-	// CRM8.8-权限主客观合并
-	newPermissionLookList := contractService.HandleEquityContractPermissionList(contractPermissionList)
-	for _, v := range newPermissionLookList {
-		for _, v2 := range v.Items {
-			fmt.Println(v2.PermissionName)
+	resp.Money = contractItem.Money / 10000
+	//有研选时,对研选套餐类型做文案处理
+	respItemYx := new(cygx.AllocationPermissionListResp)
+	if mapPermissionNameHave[utils.CHART_PERMISSION_NAME_MF_YANXUAN] {
+		var moneyYx float64
+		if expensiveYx == 0 {
+			moneyYx = 3
+		}
+		if expensiveYx == 1 {
+			moneyYx = 5
 		}
+		resp.TotalPointsContent = fmt.Sprint(resp.Money, "W,", "其中", moneyYx, "w默认归属买方研选,请对剩余", resp.Money-moneyYx, "w按照100%进行比值分配")
+		resp.Money = resp.Money - moneyYx
+		respItemYx.Proportion = moneyYx
+		respItemYx.ChartPermissionName = utils.CHART_PERMISSION_NAME_MF_YANXUAN
+		respItemYx.List = append(respItemYx.List, &cygx.AllocationRealNameListResp{utils.CHART_PERMISSION_NAME_MF_YANXUAN, 0, 0})
+	} else {
+		resp.TotalPointsContent = fmt.Sprint(resp.Money, "W")
 	}
 
-	resp.Money = contractItem.Money / 10000
+	sysUserList, err := cygx.GetAskEmailList()
+
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,GetAskEmailList Err: " + err.Error()
+		return
+	}
+
+	mapPermissionUser := make(map[string][]*cygx.AllocationRealNameListResp)
+
+	var respList []*cygx.AllocationPermissionListResp
+	if total == 0 {
+		for _, v := range sysUserList {
+			if !mapPermissionNameHave[v.ChartPermissionName] {
+				continue
+			}
+			item := new(cygx.AllocationRealNameListResp)
+			item.RealName = v.Name
+			mapPermissionUser[v.ChartPermissionName] = append(mapPermissionUser[v.ChartPermissionName], item)
+		}
+
+		for k, v := range mapPermissionUser {
+			respItem := new(cygx.AllocationPermissionListResp)
+			respItem.ChartPermissionName = k
+			respItem.List = v
+			respList = append(respList, respItem)
+		}
+		if respItemYx.ChartPermissionName != "" {
+			respList = append(respList, respItemYx)
+		}
+	} else {
+		listUser, err := cygx.GetCygxAllocationCompanyContractListById(companyContractId)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,GetCygxAllocationCompanyContractListById Err: " + err.Error()
+			return
+		}
+		for _, v := range listUser {
+			if showDetail && v.Proportion == 0 {
+				continue
+			}
+			item := new(cygx.AllocationRealNameListResp)
+			item.RealName = v.RealName
+			item.Money = v.Money
+			item.Proportion = v.Proportion
+			mapPermissionUser[v.ChartPermissionName] = append(mapPermissionUser[v.ChartPermissionName], item)
+		}
+		listPermission, err := cygx.GetCygxAllocationCompanyContractPermissionListById(companyContractId)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,GetCygxAllocationCompanyContractPermissionListById Err: " + err.Error()
+			return
+		}
+		for _, v := range listPermission {
+			if showDetail && v.Proportion == 0 {
+				continue
+			}
+			respItem := new(cygx.AllocationPermissionListResp)
+			respItem.ChartPermissionName = v.ChartPermissionName
+			respItem.Money = v.Money
+			respItem.Proportion = v.Proportion
+			respItem.List = mapPermissionUser[v.ChartPermissionName]
+			respList = append(respList, respItem)
+		}
+	}
+	resp.List = respList
+	resp.CompanyContractId = companyContractId
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}
 
-	resp.TotalPointsContent = fmt.Sprint(resp.Money, "W")
+// @Title 更新派点
+// @Description 更新派点接口
+// @Param	request	body cygx.AddProductInteriorReq true "type json string"
+// @Success 200 {object} "保存成功"
+// @router /allocation/update [post]
+func (this *ContractAllocationController) CompanyContracUpdate() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+	var req cygx.UpdateAllocationCompanyContractReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	companyContractId := req.CompanyContractId
+	if companyContractId == 0 {
+		br.Msg = "参数错误"
+		br.ErrMsg = "参数错误,id不可为空"
+		return
+	}
+
+	list := req.List
+	var items []*cygx.CygxAllocationCompanyContract
+	var itemsPermission []*cygx.CygxAllocationCompanyContractPermission
+
+	for _, v := range list {
+		itemPermission := new(cygx.CygxAllocationCompanyContractPermission)
+		itemPermission.CompanyContractId = companyContractId
+		itemPermission.AdminId = sysUser.AdminId
+		itemPermission.AdminName = sysUser.RealName
+		itemPermission.Proportion = v.Proportion
+		itemPermission.Money = v.Money
+		itemPermission.ChartPermissionName = v.ChartPermissionName
+		itemPermission.CreateTime = time.Now()
+		itemPermission.ModifyTime = time.Now()
+		itemsPermission = append(itemsPermission, itemPermission)
+
+		for _, v2 := range v.List {
+			item := new(cygx.CygxAllocationCompanyContract)
+			item.CompanyContractId = companyContractId
+			item.AdminId = sysUser.AdminId
+			item.AdminName = sysUser.RealName
+			item.Proportion = v2.Proportion
+			item.Money = v2.Money
+			item.RealName = v2.RealName
+			item.ChartPermissionName = v.ChartPermissionName
+			item.CreateTime = time.Now()
+			item.ModifyTime = time.Now()
+			items = append(items, item)
+		}
+	}
+
+	err = cygx.AddAndUpdateCygxAllocationCompanyContract(items, itemsPermission, companyContractId)
+	if err != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = "操作失败,AddAndUpdateCygxAllocationCompanyContract Err:" + err.Error()
+		return
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.IsAddLog = true
+	br.Msg = "操作成功"
+}
+
+// @Title 研究员派点统计
+// @Description 研究员派点统计接口
+// @Param   PageSize   query   int  true       "每页数据条数"
+// @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
+// @Param   Keyword   query   string  true       "客户名称"
+// @Param   StartDate   query   string  false       "开始日期"
+// @Param   EndDate   query   string  false       "结束日期"
+// @Param   IsExport   query   bool  false       "是否导出excel,默认是false"
+// @Success 200 {object}  cygx.CompanyContractListResp
+// @router /allocation/statistics [get]
+func (this *ContractAllocationController) CompanyContractStatistics() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+
+	keyword := this.GetString("Keyword")
+	startDate := this.GetString("StartDate")
+	endDate := this.GetString("EndDate")
+	if startDate == "" {
+		startDate = "2015-01-01"
+	}
+	if endDate == "" {
+		endDate = time.Now().Format(utils.FormatDate)
+	}
+
+	//是否导出报表
+	isExport, _ := this.GetBool("IsExport")
+
+	var condition string
+	var pars []interface{}
+
+	//根据当前角色来获取查询条件
+	condition, pars = getQueryParams(condition, pars, sysUser, "c.")
+
+	//关键字搜索
+	if keyword != "" {
+		condition += ` and b.company_name like "%` + keyword + `%" `
+	}
+
+	//默认只查询权益 2023-06-01 之后的合同
+	condition += ` AND c.product_id = ?  AND a.start_date > ? `
+	pars = append(pars, 2, "2023-06-01")
+
+	//列表页数据
+	listContract, err := cygx.GetCompanyContractListJoinCompany(condition, pars, 0, 1000)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+	var companyContractIds []int
+	for _, v := range listContract {
+		companyContractIds = append(companyContractIds, v.CompanyContractId)
+	}
+
+	lenArr := len(companyContractIds)
+	mapUserAllocation := make(map[string]float64) // 关联合同
+	mapUserMoney := make(map[string]float64)      // 派点金额
+	mapPermissionAllocation := make(map[string]float64)
+	mapPermissionMoney := make(map[string]float64)
+
+	totalContract := lenArr //所有的关联合同
+	var totalMoney float64  //所有的关联合同的金额 单位万
+	if lenArr > 0 {
+		var conditionAllocation string
+		var parsAllocation []interface{}
+		allocationCompanyContractList, err := cygx.GetCygxAllocationCompanyContractList(conditionAllocation, parsAllocation)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,Err:" + err.Error()
+			return
+		}
+
+		for _, v := range allocationCompanyContractList {
+			if v.Proportion != 0 {
+				mapUserAllocation[v.RealName] += 1
+				mapUserMoney[v.RealName] += v.Money
+				mapPermissionAllocation[v.ChartPermissionName] += 1
+				mapPermissionMoney[v.ChartPermissionName] += v.Money
+
+				totalMoney += v.Money
+			}
+		}
+	}
+
+	sysUserList, err := cygx.GetAskEmailList()
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,GetAskEmailList Err: " + err.Error()
+		return
+	}
+
+	mapPermissionUser := make(map[string][]*cygx.AllocationRealNameStatisticsListResp)
+
+	for _, v := range sysUserList {
+		item := new(cygx.AllocationRealNameStatisticsListResp)
+		item.RealName = v.Name
+		item.TotalRelatedContract = mapUserAllocation[v.Name]
+		item.TotalDispatchPoint = fmt.Sprint(mapUserMoney[v.Name])
+		if item.TotalDispatchPoint == "" {
+			item.TotalDispatchPoint = "0"
+		}
+		//组内占比
+		item.GroupProportion = fmt.Sprint(mapUserMoney[v.Name] / mapPermissionMoney[v.ChartPermissionName] * 100)
+		if item.GroupProportion == "" {
+			item.GroupProportion = "0"
+		}
+		item.GroupProportion += "%"
+
+		//部门占比
+		item.DepartmentProportion = fmt.Sprint(mapUserMoney[v.Name] / totalMoney * 100)
+		if item.DepartmentProportion == "" {
+			item.DepartmentProportion = "0"
+		}
+		item.DepartmentProportion += "%"
+
+		mapPermissionUser[v.ChartPermissionName] = append(mapPermissionUser[v.ChartPermissionName], item)
+	}
+
+	for k, v := range mapPermissionUser {
+		lenUser := len(v)
+		item := new(cygx.AllocationRealNameStatisticsListResp)
+		item.RealName = "合计"
+		item.TotalRelatedContract = mapPermissionAllocation[k]
+
+		item.TotalDispatchPoint = fmt.Sprint(mapPermissionMoney[k], "/", "300")
+		item.GroupProportion = "100%"
+
+		// 部门占比
+		item.DepartmentProportion = fmt.Sprint(mapPermissionMoney[k] / totalMoney * 100)
+		if item.DepartmentProportion == "" {
+			item.DepartmentProportion = "0"
+		}
+		item.DepartmentProportion += "%"
+
+		mapPermissionUser[k] = append(mapPermissionUser[k], item)
+
+		item = new(cygx.AllocationRealNameStatisticsListResp)
+		item.RealName = "平均"
+		item.TotalRelatedContract = mapPermissionAllocation[k] / float64(lenUser)
+		item.TotalDispatchPoint = fmt.Sprint(mapPermissionMoney[k] / float64(lenUser))
+
+		//组内占比
+		item.GroupProportion = fmt.Sprint(float64(lenUser) / mapPermissionMoney[k] * 100)
+		if item.GroupProportion == "" {
+			item.GroupProportion = "0"
+		}
+		item.GroupProportion += "%"
+
+		// 部门占比
+		item.DepartmentProportion = fmt.Sprint(mapPermissionMoney[k] / totalMoney * 100)
+		if item.DepartmentProportion == "" {
+			item.DepartmentProportion = "0"
+		}
+		item.DepartmentProportion += "%"
+
+		mapPermissionUser[k] = append(mapPermissionUser[k], item)
+	}
+
+	var list []*cygx.AllocationPermissionStatisticsListResp
+
+	permissionNameArr := []string{"医药", "消费", "科技", "智造", "策略"}
+
+	for _, v := range permissionNameArr {
+		item := new(cygx.AllocationPermissionStatisticsListResp)
+		item.ChartPermissionName = v
+		item.List = mapPermissionUser[v]
+		list = append(list, item)
+	}
+
+	resp := cygx.CygxAllocationCompanyContractDetailStatisticsResp{
+		List: list,
+	}
+	resp.TotalContract = totalContract
+	resp.TotalMoney = totalMoney
+	//导出excel
+	if isExport {
+		//IncrementalCompanyListExport(this, dataType, resp, br)
+		return
+	}
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "获取成功"

+ 11 - 3
models/cygx/activity_ask_email.go

@@ -5,9 +5,10 @@ import (
 )
 
 type AskEmailRep struct {
-	Name   string `description:"姓名"`
-	Email  string `description:"邮箱"`
-	Mobile string `description:"手机号"`
+	Name                string `description:"姓名"`
+	Email               string `description:"邮箱"`
+	Mobile              string `description:"手机号"`
+	ChartPermissionName string `description:"权限名称"`
 }
 
 func GetAskEmail() (item []*AskEmailRep, err error) {
@@ -16,3 +17,10 @@ func GetAskEmail() (item []*AskEmailRep, err error) {
 	_, err = o.Raw(sql).QueryRows(&item)
 	return
 }
+
+func GetAskEmailList() (item []*AskEmailRep, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT * FROM cygx_activity_ask_email WHERE    chart_permission_name != ''  GROUP BY sort  DESC`
+	_, err = o.Raw(sql).QueryRows(&item)
+	return
+}

+ 78 - 13
models/cygx/allocation_company_contract.go

@@ -11,10 +11,12 @@ type CygxAllocationCompanyContract struct {
 	CompanyContractId           int       `description:"合同id"`
 	CreateTime                  time.Time `description:"创建时间"`
 	ModifyTime                  time.Time `description:"更新时间"`
-	Adminid                     int       `description:"操作人ID"`
+	AdminId                     int       `description:"操作人ID"`
 	AdminName                   string    `description:"内容"`
 	Proportion                  float64   `description:"占比"`
-	RealName                    int       `description:"研究员姓名"`
+	Money                       float64   `description:"金额"`
+	RealName                    string    `description:"研究员姓名"`
+	ChartPermissionName         string    `description:"行业名称"`
 }
 
 // 研究员派点日志
@@ -23,10 +25,12 @@ type CygxAllocationCompanyContractLog struct {
 	CompanyContractId           int       `description:"合同id"`
 	CreateTime                  time.Time `description:"创建时间"`
 	ModifyTime                  time.Time `description:"更新时间"`
-	Adminid                     int       `description:"操作人ID"`
+	AdminId                     int       `description:"操作人ID"`
 	AdminName                   string    `description:"内容"`
 	Proportion                  float64   `description:"占比"`
-	RealName                    int       `description:"研究员姓名"`
+	Money                       float64   `description:"金额"`
+	RealName                    string    `description:"研究员姓名"`
+	ChartPermissionName         string    `description:"行业名称"`
 }
 
 // 行业派点
@@ -35,10 +39,11 @@ type CygxAllocationCompanyContractPermission struct {
 	CompanyContractId           int       `description:"合同id"`
 	CreateTime                  time.Time `description:"创建时间"`
 	ModifyTime                  time.Time `description:"更新时间"`
-	Adminid                     int       `description:"操作人ID"`
+	AdminId                     int       `description:"操作人ID"`
 	AdminName                   string    `description:"内容"`
 	Proportion                  float64   `description:"占比"`
-	ChartPermissionName         int       `description:"行业名称"`
+	Money                       float64   `description:"金额"`
+	ChartPermissionName         string    `description:"行业名称"`
 }
 
 // 行业派点日志
@@ -47,10 +52,11 @@ type CygxAllocationCompanyContractPermissionLog struct {
 	CompanyContractId           int       `description:"合同id"`
 	CreateTime                  time.Time `description:"创建时间"`
 	ModifyTime                  time.Time `description:"更新时间"`
-	Adminid                     int       `description:"操作人ID"`
+	AdminId                     int       `description:"操作人ID"`
 	AdminName                   string    `description:"内容"`
 	Proportion                  float64   `description:"占比"`
-	ChartPermissionName         int       `description:"行业名称"`
+	Money                       float64   `description:"金额"`
+	ChartPermissionName         string    `description:"行业名称"`
 }
 
 // 更新派点信息
@@ -73,10 +79,13 @@ func AddAndUpdateCygxAllocationCompanyContract(items []*CygxAllocationCompanyCon
 	for _, v := range items {
 		item := new(CygxAllocationCompanyContractLog)
 		item.CompanyContractId = v.CompanyContractId
-		item.Adminid = v.Adminid
+		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)
@@ -87,17 +96,19 @@ func AddAndUpdateCygxAllocationCompanyContract(items []*CygxAllocationCompanyCon
 	for _, v := range itemsPermission {
 		item := new(CygxAllocationCompanyContractPermissionLog)
 		item.CompanyContractId = v.CompanyContractId
-		item.Adminid = v.Adminid
+		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.CreateTime = time.Now()
 		item.ModifyTime = time.Now()
 		itemsPermissionLog = append(itemsPermissionLog, item)
 	}
 
 	//删除原有的研究员派点信息
-	sql := `	DELETE FROM cygx_allocation_company_contract WHERE company_contract_id = ?`
+	sql := `DELETE FROM cygx_allocation_company_contract WHERE company_contract_id = ?`
 	_, err = to.Raw(sql, companyContractId).Exec()
 	if err != nil {
 		return
@@ -134,7 +145,13 @@ func AddAndUpdateCygxAllocationCompanyContract(items []*CygxAllocationCompanyCon
 	return
 }
 
+type UpdateAllocationCompanyContractReq struct {
+	CompanyContractId int `description:"合同ID"`
+	List              []*AllocationPermissionListResp
+}
+
 type CygxAllocationCompanyContractDetailResp struct {
+	CompanyContractId  int     `description:"合同ID"`
 	Money              float64 `description:"金额(单位万)"`
 	TotalPointsContent string  `description:"总点数描述"`
 	List               []*AllocationPermissionListResp
@@ -142,7 +159,7 @@ type CygxAllocationCompanyContractDetailResp struct {
 
 // 行业
 type AllocationPermissionListResp struct {
-	ChartPermissionName int     `description:"行业名称"`
+	ChartPermissionName string  `description:"行业名称"`
 	Proportion          float64 `description:"占比"`
 	Money               float64 `description:"金额(单位万)"`
 	List                []*AllocationRealNameListResp
@@ -150,7 +167,7 @@ type AllocationPermissionListResp struct {
 
 // 行业
 type AllocationRealNameListResp struct {
-	RealName   int     `description:"研究员姓名"`
+	RealName   string  `description:"研究员姓名"`
 	Proportion float64 `description:"占比"`
 	Money      float64 `description:"金额(单位万)"`
 }
@@ -162,3 +179,51 @@ func GetCygxAllocationCompanyContractCountByCompanyContractId(companyContractId
 	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
+}
+
+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:"部门占比"`
+}

+ 19 - 1
routers/commentsRouter.go

@@ -1350,13 +1350,31 @@ func init() {
 
     beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/cygx:ContractAllocationController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/cygx:ContractAllocationController"],
         beego.ControllerComments{
-            Method: "Detail",
+            Method: "CompanyContracDetail",
             Router: `/allocation/detail`,
             AllowHTTPMethods: []string{"get"},
             MethodParams: param.Make(),
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/cygx:ContractAllocationController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/cygx:ContractAllocationController"],
+        beego.ControllerComments{
+            Method: "CompanyContractStatistics",
+            Router: `/allocation/statistics`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/cygx:ContractAllocationController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/cygx:ContractAllocationController"],
+        beego.ControllerComments{
+            Method: "CompanyContracUpdate",
+            Router: `/allocation/update`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/cygx:IndustrialAnalystController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/cygx:IndustrialAnalystController"],
         beego.ControllerComments{
             Method: "IndustrialAnalystAdd",