Sfoglia il codice sorgente

Merge branch 'master' of http://8.136.199.33:3000/hongze/hz_crm_api into crm/crm_14.7

xingzai 1 anno fa
parent
commit
5263e659cc

+ 58 - 1
controllers/company_apply_v2.go

@@ -79,7 +79,7 @@ func (this *CompanyApplyController) ApplyServiceUpdate() {
 	}
 	mapPermissionIdUpgrade := make(map[int]int, 0)
 	mapPermissionIdExpensive := make(map[int]int, 0)
-
+	var raicontractType string
 	if productId == 2 {
 		// CRM13.3改-是否为权益内部人员, 非权益内部人员只能勾选行业不能勾选单独的主客观, 勾选行业(即勾选主观的ID需要加入客观的权限ID)
 		isRai, e := services.CheckRaiAdmin(sysUser.AdminId)
@@ -97,6 +97,23 @@ func (this *CompanyApplyController) ApplyServiceUpdate() {
 			return
 		}
 		req.PermissionIds = permissionIdsNew
+
+		//权益的新签合同重新定义,如果合同起始时间在新签合同起始日期 1年之内的,仍为新签合同。
+		raicontractType = req.ContractType
+		if raicontractType != "新签合同" {
+			startDateTime, _ := time.Parse(utils.FormatDate, req.StartDate)
+			startDateTime = startDateTime.AddDate(-1, 0, 0)
+			totalLastYear, err := company.GetCompanyContractCountRaiByLastYear(req.CompanyId, startDateTime.Format(utils.FormatDate))
+			if err != nil {
+				br.Msg = "获取合同信息失败"
+				br.ErrMsg = "获取合同信息失败,Err:" + err.Error()
+				return
+			}
+			if totalLastYear > 0 {
+				raicontractType = "新签合同"
+			}
+		}
+
 	} else {
 		permissionStr, err := company.GetPermissionIdById(req.PermissionIds)
 		if err != nil {
@@ -217,6 +234,7 @@ func (this *CompanyApplyController) ApplyServiceUpdate() {
 		contract.ProductName = companyProduct.ProductName
 		contract.CompanyProductId = companyProduct.CompanyProductId
 		contract.ContractType = req.ContractType
+		contract.RaiContractType = raicontractType
 		contract.ContractCode = contractCode
 		contract.StartDate = req.StartDate
 		contract.EndDate = req.EndDate
@@ -568,6 +586,7 @@ func (this *CompanyApplyController) ApplyTurnPositive() {
 
 	// 合同类型
 	contractType := req.ContractType
+	var raicontractType string // 权益合同类型
 	{
 		if contractType == "" {
 			contractType = "新签合同"
@@ -588,6 +607,24 @@ func (this *CompanyApplyController) ApplyTurnPositive() {
 			contractType = "续约合同"
 		}
 
+		if productId == 2 {
+			//权益的新签合同重新定义,如果合同起始时间在新签合同起始日期 1年之内的,仍为新签合同。
+			raicontractType = contractType
+			if raicontractType != "新签合同" {
+				startDateTime, _ := time.Parse(utils.FormatDate, req.StartDate)
+				startDateTime = startDateTime.AddDate(-1, 0, 0)
+				totalLastYear, err := company.GetCompanyContractCountRaiByLastYear(req.CompanyId, startDateTime.Format(utils.FormatDate))
+				if err != nil {
+					br.Msg = "获取合同信息失败"
+					br.ErrMsg = "获取合同信息失败,Err:" + err.Error()
+					return
+				}
+				if totalLastYear > 0 {
+					raicontractType = "新签合同"
+				}
+			}
+		}
+
 		// 若上面的判断不是续约合同, 则继续查询是否存在正式转试用的记录,如果存在,那么合同类型是续约合同
 		if contractType != "续约合同" {
 			total, e := company.GetCompanyProductOperationRecordCount(companyProduct.CompanyId, companyProduct.ProductId)
@@ -634,6 +671,7 @@ func (this *CompanyApplyController) ApplyTurnPositive() {
 		contract.CompanyId = req.CompanyId
 		contract.ProductId = productId
 		contract.ContractType = contractType
+		contract.RaiContractType = raicontractType
 		contract.ProductName = companyProduct.ProductName
 		contract.CompanyProductId = companyProduct.CompanyProductId
 		contract.ContractCode = contractCode
@@ -1081,6 +1119,24 @@ func (this *CompanyApplyController) ApplyBySystemContract() {
 		}
 	}
 
+	var raicontractType string
+	if productId == 2 {
+		//权益的新签合同重新定义,如果合同起始时间在新签合同起始日期 1年之内的,仍为新签合同。
+		raicontractType = contractType
+		if raicontractType != "新签合同" {
+			startDateTime := contractDetail.StartDate.AddDate(-1, 0, 0)
+			totalLastYear, err := company.GetCompanyContractCountRaiByLastYear(req.CompanyId, startDateTime.Format(utils.FormatDate))
+			if err != nil {
+				br.Msg = "获取合同信息失败"
+				br.ErrMsg = "获取合同信息失败,Err:" + err.Error()
+				return
+			}
+			if totalLastYear > 0 {
+				raicontractType = "新签合同"
+			}
+		}
+	}
+
 	var companyApprovalId int
 	if req.CompanyApprovalId <= 0 {
 		//当前是否存在待审批的单子
@@ -1105,6 +1161,7 @@ func (this *CompanyApplyController) ApplyBySystemContract() {
 			CompanyId:        req.CompanyId,
 			ProductId:        contractDetail.ProductId,
 			ContractType:     contractType,
+			RaiContractType:  raicontractType,
 			ProductName:      companyProduct.ProductName,
 			CompanyProductId: companyProduct.CompanyProductId,
 			ContractCode:     contractDetail.ContractCode,

+ 0 - 83
controllers/company_renewal.go

@@ -2,7 +2,6 @@ package controllers
 
 import (
 	"encoding/json"
-	"fmt"
 	"hongze/hz_crm_api/models"
 	"hongze/hz_crm_api/models/company"
 	"hongze/hz_crm_api/utils"
@@ -501,85 +500,3 @@ func (this *CompanyRenewalController) CompanyContractNoRenewedAscribeAddDetail()
 	br.Msg = "获取成功"
 	br.Data = resp
 }
-
-func init12123() {
-	var condition string
-	var pars []interface{}
-	list, e := company.GetCompanyNoRenewedAscribeList(condition, pars, 0, 0)
-	if e != nil && e.Error() != utils.ErrNoRow() {
-		fmt.Println(e)
-		return
-	}
-
-	for _, v := range list {
-		pars = make([]interface{}, 0)
-		condition = " AND  company_id = ? "
-		pars = append(pars, v.CompanyId)
-
-		companyContractList, e := company.GetCompanyContractList(condition, pars)
-		if e != nil && e.Error() != utils.ErrNoRow() {
-			fmt.Println(e)
-			return
-		}
-		for _, vC := range companyContractList {
-			item := new(company.CompanyContractNoRenewedAscribe)
-			item.CompanyAscribeId = v.CompanyAscribeId
-			item.AscribeContent = v.AscribeContent
-			item.Content = v.Content
-			item.ProductId = v.ProductId
-			item.CompanyId = v.CompanyId
-			item.CompanyContractId = vC.CompanyContractId
-			item.AdminId = v.AdminId
-			item.CreateTime = utils.StrTimeToTime(v.CreateTime)
-			item.ModifyTime = utils.StrTimeToTime(v.CreateTime)
-
-			itemLog := new(company.CompanyContractNoRenewedAscribeLog)
-			itemLog.CompanyAscribeId = v.CompanyAscribeId
-			itemLog.AscribeContent = v.AscribeContent
-			itemLog.Content = v.Content
-			itemLog.ProductId = v.ProductId
-			itemLog.CompanyId = v.CompanyId
-			itemLog.CompanyContractId = vC.CompanyContractId
-			itemLog.AdminId = v.AdminId
-			itemLog.CreateTime = utils.StrTimeToTime(v.CreateTime)
-			itemLog.ModifyTime = utils.StrTimeToTime(v.CreateTime)
-
-			err := company.AddCompanyContractNoRenewedAscribe(item, itemLog)
-			fmt.Println(err)
-		}
-	}
-	return
-}
-
-func init879() {
-
-	companyContractList, e := models.GetIncrementalCompanyListByOperationRecordMerge879()
-	if e != nil && e.Error() != utils.ErrNoRow() {
-		fmt.Println(e)
-		return
-	}
-	fmt.Println(len(companyContractList))
-	//return
-	for _, v := range companyContractList {
-		item := new(company.CompanyContractNoRenewedAscribe)
-		item.CompanyContractId = v.CompanyContractId
-		item.ProductId = v.ProductId
-		item.CompanyId = v.CompanyId
-		item.CreateTime = time.Now()
-		item.ModifyTime = time.Now()
-
-		itemLog := new(company.CompanyContractNoRenewedAscribeLog)
-		itemLog.AscribeContent = v.AscribeContent
-		itemLog.Content = v.Content
-		itemLog.ProductId = v.ProductId
-		itemLog.CompanyId = v.CompanyId
-		itemLog.CompanyContractId = v.CompanyContractId
-		itemLog.CreateTime = time.Now()
-		itemLog.ModifyTime = time.Now()
-
-		err := company.AddCompanyContractNoRenewedAscribe(item, itemLog)
-		fmt.Println(err)
-	}
-
-	return
-}

+ 657 - 2
controllers/statistic_company_merge.go

@@ -11,6 +11,9 @@ import (
 	cygxService "hongze/hz_crm_api/services/cygx"
 	"os"
 	"path/filepath"
+	"strconv"
+	"strings"
+
 	//"hongze/hz_crm_api/services"
 	"hongze/hz_crm_api/utils"
 	//"strings"
@@ -204,7 +207,7 @@ func (this *StatisticCompanyMergerController) MergeCompanyList() {
 		pars1 := pars
 		condition1 += ` AND a.start_date >= ? AND a.start_date <= ?  `
 		pars1 = append(pars1, startDate, endDate)
-		condition1 += ` AND a.contract_type = ? `
+		condition1 += ` AND a.rai_contract_type = ? `
 		pars1 = append(pars1, "新签合同")
 		newCompanyTotal, err = company.GetIncrementalNewCompanyProductMergeCount(condition1, pars1)
 		if err != nil && err.Error() != utils.ErrNoRow() {
@@ -240,7 +243,7 @@ func (this *StatisticCompanyMergerController) MergeCompanyList() {
 		pars1 := pars
 		condition1 += ` AND a.start_date >= ? AND a.start_date <= ? `
 		pars1 = append(pars1, startDate, endDate)
-		condition1 += ` AND a.contract_type = ? `
+		condition1 += ` AND a.rai_contract_type = ? `
 		pars1 = append(pars1, "续约合同")
 		////额外条件(续约合同的起始日期包含在所选时间段内且不包含在新签合同存续期内的客户)
 		//pars1 = append(pars1, endDate)
@@ -1195,3 +1198,655 @@ func PermissionCompanyListListExport(this *StatisticCompanyMergerController, dat
 	br.Success = true
 	br.Msg = "导出成功"
 }
+
+// @Title 权益客户续约率统计
+// @Description 权益客户续约率统计接口
+// @Param   PageSize   query   int  true       "每页数据条数"
+// @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
+// @Param   AdminId   query   string  true       "销售id,多个用英文逗号隔开,空字符串为全部"
+// @Param   StartDate   query   string  false       "开始日期"
+// @Param   EndDate   query   string  false       "结束日期"
+// @Param   ContractDataType   query   string  false       "合同类型,枚举值:`续约合同`,`到期合同`"
+// @Success 200 {object} response.IncrementalCompanyListResp
+// @router /merge_company/company_contract_percentage/list [get]
+func (this *StatisticCompanyMergerController) CompanyContractPercentageList() {
+	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
+	}
+
+	pageSize, _ := this.GetInt("PageSize")
+	currentIndex, _ := this.GetInt("CurrentIndex")
+	adminId := this.GetString("AdminId")
+	contractDataType := this.GetString("ContractDataType")
+	startDate := this.GetString("StartDate")
+	endDate := this.GetString("EndDate")
+	initendDate := this.GetString("EndDate")
+	if startDate == "" || endDate == "" {
+		br.Msg = "开始时间或结束时间不能为空"
+		return
+	}
+
+	//如果传的查询方式是今年,那么就以当前时间作为截止时间
+	//if endDate == strconv.Itoa(time.Now().Year())+"-12-31" {
+	//	endDate = time.Now().Format(utils.FormatDate)
+	//}
+
+	//判断结束时间是否晚于当前时间,如果晚于当前时间,那么就把当前时间作为截止时间。
+	endDateTime, _ := time.Parse(utils.FormatDate, endDate)
+	if endDateTime.After(time.Now()) {
+		endDate = time.Now().Format(utils.FormatDate)
+	}
+	//fmt.Println("endDate", endDate)
+	if contractDataType == "" {
+		contractDataType = "续约合同"
+	}
+
+	var startSize int
+	if pageSize <= 0 {
+		pageSize = utils.PageSize20
+	}
+	if currentIndex <= 0 {
+		currentIndex = 1
+	}
+	startSize = utils.StartIndex(currentIndex, pageSize)
+
+	var condition string
+	var pars []interface{}
+
+	//条件
+	if adminId != "" {
+		condition += ` AND c.seller_id in  (` + adminId + `) `
+	} else {
+		//根据当前角色来获取查询条件
+		condition, pars = getQueryParams(condition, pars, sysUser, "c.")
+	}
+
+	//权益有效合同
+	condition += ` AND c.product_id = 2   AND  a.status = 1 `
+
+	var list []*models.IncrementalList
+	var renewalRateMoney string        //合同金额续约率
+	var renewalRateMoneyContent string //合同金额续约率详情
+	var renewalRateTotal string        //合同数量续约率
+	var renewalRateTotalContent string //合同数量续约率详情
+	var renewalContractTotal int       //续约合同数量
+	var renewalContractMoney int       //续约合同数量
+	var expireRenewalContractTotal int //到期合同数量
+	var expireRenewalContractMoney int //到期合同数量
+	var dataTotal int                  //分页数据
+
+	conditionRenewal := condition // 续约合同查询条件查询条件
+	parsRenewal := pars
+	conditionRenewal += ` AND a.start_date >= ? AND a.start_date <= ? `
+	parsRenewal = append(parsRenewal, startDate, endDate)
+	conditionRenewal += ` AND a.rai_contract_type = ? `
+	parsRenewal = append(parsRenewal, "续约合同")
+	totalRenewal, err := company.GetIncrementalRenewalCompanyProductMergeCount(conditionRenewal, parsRenewal)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+	totalMoneyRenewal, err := company.GetIncrementalRenewalCompanyProductMergeSumMoney(conditionRenewal, parsRenewal)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+	//续约合同查询条件查询条件 end
+
+	conditionRenewalEnd := condition // 今年结束的续约合同查询条件
+	parsRenewalEnd := pars
+	conditionRenewalEnd += ` AND a.end_date >= ? AND a.end_date <= ? `
+	parsRenewalEnd = append(parsRenewalEnd, startDate, endDate)
+	conditionRenewalEnd += ` AND a.rai_contract_type = ? `
+	parsRenewalEnd = append(parsRenewalEnd, "续约合同")
+	totalRenewalEnd, err := company.GetIncrementalRenewalCompanyProductMergeCount(conditionRenewalEnd, parsRenewalEnd)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+	totalMoneyRenewalEnd, err := company.GetIncrementalRenewalCompanyProductMergeSumMoney(conditionRenewalEnd, parsRenewalEnd)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	} // 今年结束的续约合同查询条件end
+
+	conditionNew := condition // 新签合同查询条件
+	parsNew := pars
+	conditionNew += ` AND a.end_date >= ? AND a.end_date <= ? `
+	parsNew = append(parsNew, startDate, endDate)
+	conditionNew += ` AND a.rai_contract_type = ? `
+	parsNew = append(parsNew, "新签合同")
+	totalNew, err := company.GetIncrementalRenewalCompanyProductMergeCount(conditionNew, parsNew)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+	totalMoneyNew, err := company.GetIncrementalRenewalCompanyProductMergeSumMoney(conditionNew, parsNew)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	} // 新签合同查询条件 end
+
+	//分子或者分母为零的时候,不做计算
+	if totalRenewal == 0 || totalNew+totalRenewalEnd == 0 {
+		renewalRateMoney = "0%"
+		renewalRateTotal = "0%"
+	} else {
+		renewalRateMoney = fmt.Sprint(utils.SubFloatToString(float64(totalMoneyRenewal)/float64(totalMoneyNew+totalMoneyRenewalEnd)*100, 2), "%")
+		renewalRateTotal = fmt.Sprint(utils.SubFloatToString(float64(totalRenewal)/float64(totalNew+totalRenewalEnd)*100, 2), "%")
+	}
+	renewalRateTotalContent = fmt.Sprint(int(totalMoneyRenewal), "/", int(totalMoneyNew+totalMoneyRenewalEnd))
+	renewalRateMoneyContent = fmt.Sprint(totalRenewal, "份/", totalNew+totalRenewalEnd, "份")
+
+	if contractDataType == "续约合同" {
+		condition1 := condition
+		pars1 := pars
+		condition1 += ` AND a.start_date >= ? AND a.start_date <= ? `
+		pars1 = append(pars1, startDate, endDate)
+		condition1 += ` AND a.rai_contract_type = ? `
+		pars1 = append(pars1, "续约合同")
+
+		total, err := company.GetIncrementalRenewalCompanyProductMergeCount(condition1, pars1)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,Err:" + err.Error()
+			return
+		}
+		totalMoney, err := company.GetIncrementalRenewalCompanyProductMergeSumMoney(condition1, pars1)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,Err:" + err.Error()
+			return
+		}
+
+		renewalContractTotal = total
+		renewalContractMoney = int(totalMoney)
+
+		//列表页数据
+		tmpList, err := models.GetIncrementalCompanyMergeList(condition1, pars1, startSize, pageSize)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,Err:" + err.Error()
+			return
+		}
+		list = tmpList
+		dataTotal = total
+	}
+
+	if contractDataType == "到期合同" {
+		condition1 := condition
+		pars1 := pars
+
+		//判断结束时间是否晚于当前时间,如果晚于当前时间,那么就把当前时间作为截止时间。并且当前这天的到期的合同,不查询
+		endDateTime, _ := time.Parse(utils.FormatDate, initendDate)
+		if endDateTime.After(time.Now()) {
+			endDate = time.Now().Format(utils.FormatDate)
+			condition1 += ` AND a.end_date >= ? AND a.end_date < ? `
+		} else {
+			condition1 += ` AND a.end_date >= ? AND a.end_date <= ? `
+		}
+
+		//condition1 += ` AND a.end_date >= ? AND a.end_date <= ? `
+		pars1 = append(pars1, startDate, endDate)
+
+		total, err := company.GetIncrementalRenewalCompanyProductMergeCount(condition1, pars1)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,Err:" + err.Error()
+			return
+		}
+		totalMoney, err := company.GetIncrementalRenewalCompanyProductMergeSumMoney(condition1, pars1)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,Err:" + err.Error()
+			return
+		}
+		expireRenewalContractTotal = total
+		expireRenewalContractMoney = int(totalMoney)
+
+		//列表页数据
+		tmpList, err := models.GetIncrementalCompanyMergeListEnd(condition1, pars1, startSize, pageSize)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,Err:" + err.Error()
+			return
+		}
+		list = tmpList
+		dataTotal = total
+	}
+
+	listLen := len(list)
+	if listLen == 0 {
+		list = make([]*models.IncrementalList, 0)
+	}
+	var companyContractIds []int
+	for i := 0; i < listLen; i++ {
+		item := list[i]
+		companyContractIds = append(companyContractIds, item.CompanyContractId)
+	}
+
+	//合并合同所对应的权限
+	mappermissionName, err := cygxService.GetCompanyContractPermissionNameMapById(companyContractIds)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+	for _, v := range list {
+		v.PermissionName = mappermissionName[v.CompanyContractId]
+	}
+	page := paging.GetPaging(currentIndex, pageSize, dataTotal)
+	resp := response.IncrementalCompanyPercentageListResp{
+		Paging:                     page,
+		RenewalContractTotal:       renewalContractTotal,
+		RenewalContractMoney:       renewalContractMoney,
+		ExpireRenewalContractTotal: expireRenewalContractTotal,
+		ExpireRenewalContractMoney: expireRenewalContractMoney,
+		RenewalRateMoney:           renewalRateMoney,
+		RenewalRateMoneyContent:    renewalRateMoneyContent,
+		RenewalRateTotal:           renewalRateTotal,
+		RenewalRateTotalContent:    renewalRateTotalContent,
+		List:                       list,
+	}
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}
+
+// @Title 权益客户续约率统计所能查询的年份
+// @Description权益客户续约率统计所能查询的年份接口
+// @Success 200 {object} response.IncrementalCompanyListResp
+// @router /merge_company/get_year_list [get]
+func (this *StatisticCompanyMergerController) GetYearList() {
+	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
+	}
+	thisYear := time.Now().Year()
+	startYear := 2022 //初始查询年份
+
+	resp := new(company.SearchYearListResp)
+	var yearList []int
+	for i := startYear; i <= thisYear; i++ {
+		yearList = append(yearList, i)
+	}
+	resp.List = yearList
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}
+
+// @Title 权益客户续约率统计
+// @Description 权益客户续约率统计接口
+// @Param   PageSize   query   int  true       "每页数据条数"
+// @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
+// @Param   AdminId   query   string  true       "销售id,多个用英文逗号隔开,空字符串为全部"
+// @Param   StartDate   query   string  false       "开始日期"
+// @Param   EndDate   query   string  false       "结束日期"
+// @Param   ContractDataType   query   string  false       "合同类型,枚举值:`续约合同`,`到期合同`"
+// @Success 200 {object} response.IncrementalCompanyListResp
+// @router /merge_company/company_contract_percentage/listV2 [get]
+func (this *StatisticCompanyMergerController) CompanyContractPercentageListV2() {
+	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
+	}
+
+	pageSize, _ := this.GetInt("PageSize")
+	currentIndex, _ := this.GetInt("CurrentIndex")
+	adminId := this.GetString("AdminId")
+	contractDataType := this.GetString("ContractDataType")
+	startDate := this.GetString("StartDate")
+	endDate := this.GetString("EndDate")
+	//initendDate := this.GetString("EndDate")
+	if startDate == "" || endDate == "" {
+		br.Msg = "开始时间或结束时间不能为空"
+		return
+	}
+
+	//如果传的查询方式是今年,那么就以当前时间作为截止时间
+	//if endDate == strconv.Itoa(time.Now().Year())+"-12-31" {
+	//	endDate = time.Now().Format(utils.FormatDate)
+	//}
+
+	//判断结束时间是否晚于当前时间,如果晚于当前时间,那么就把当前时间作为截止时间。
+	endDateTime, _ := time.Parse(utils.FormatDate, endDate)
+	if endDateTime.After(time.Now()) {
+		endDate = time.Now().Format(utils.FormatDate)
+	}
+	//fmt.Println("endDate", endDate)
+	if contractDataType == "" {
+		contractDataType = "续约合同"
+	}
+
+	var startSize int
+	if pageSize <= 0 {
+		pageSize = utils.PageSize20
+	}
+	if currentIndex <= 0 {
+		currentIndex = 1
+	}
+	startSize = utils.StartIndex(currentIndex, pageSize)
+
+	var condition string
+	var pars []interface{}
+
+	//条件
+	if adminId != "" {
+		condition += ` AND c.seller_id in  (` + adminId + `) `
+	} else {
+		//根据当前角色来获取查询条件
+		condition, pars = getQueryParams(condition, pars, sysUser, "c.")
+	}
+
+	//权益有效合同
+	condition += ` AND c.product_id = 2   AND  a.status = 1 `
+
+	var list []*models.IncrementalList
+	var renewalRateMoney string        //合同金额续约率
+	var renewalRateMoneyContent string //合同金额续约率详情
+	var renewalRateTotal string        //合同数量续约率
+	var renewalRateTotalContent string //合同数量续约率详情
+	var renewalContractTotal int       //续约合同数量
+	var renewalContractMoney int       //续约合同数量
+	var expireRenewalContractTotal int //到期合同数量
+	var expireRenewalContractMoney int //到期合同数量
+	var dataTotal int                  //分页数据
+
+	//conditionRenewal := condition // 续约合同查询条件查询条件
+	//parsRenewal := pars
+	//conditionRenewal += ` AND a.start_date >= ? AND a.start_date <= ? `
+	//conditionRenewal += ` AND a.end_date >= ? AND a.end_date <= ? `
+	//parsRenewal = append(parsRenewal, startDate, endDate)
+	////conditionRenewal += ` AND a.rai_contract_type = ? `
+	////parsRenewal = append(parsRenewal, "续约合同")
+	//
+	//conditionRenewal += ` AND  a.company_ascribe_id  > 0 AND  a.company_ascribe_id  !=9   ` // 已确认未续约
+
+	//totalRenewal, err := company.GetIncrementalRenewalCompanyProductMergeCount(conditionRenewal, parsRenewal)
+	//if err != nil {
+	//	br.Msg = "获取失败"
+	//	br.ErrMsg = "获取失败,Err:" + err.Error()
+	//	return
+	//}
+	//
+	//totalMoneyRenewal, err := company.GetIncrementalRenewalCompanyProductMergeSumMoney(conditionRenewal, parsRenewal)
+	//if err != nil {
+	//	br.Msg = "获取失败"
+	//	br.ErrMsg = "获取失败,Err:" + err.Error()
+	//	return
+	//}
+	//续约合同查询条件查询条件 end
+
+	//conditionRenewalEnd := condition // 今年结束的续约合同查询条件
+	//parsRenewalEnd := pars
+	//
+	////startDateTime, _ := time.Parse(utils.FormatDate, endDate)
+	////startDateTime = startDateTime.AddDate(-1, 0, 2) //合同开始时间,与查询的结束时间,之间相差的天数大于  365天。
+	////fmt.Println("startDateTime", startDateTime)
+	//conditionRenewalEnd += ` AND a.end_date >= ? AND a.end_date <= ?    `
+	//parsRenewalEnd = append(parsRenewalEnd, startDate, endDate)
+	//conditionRenewalEnd += ` AND a.rai_contract_type = ? `
+	//parsRenewalEnd = append(parsRenewalEnd, "续约合同")
+	//
+	//totalRenewalEnd, err := company.GetIncrementalRenewalCompanyProductMergeCount(conditionRenewalEnd, parsRenewalEnd)
+	//if err != nil && err.Error() != utils.ErrNoRow() {
+	//	br.Msg = "获取失败"
+	//	br.ErrMsg = "获取失败,Err:" + err.Error()
+	//	return
+	//}
+	////return
+	//totalMoneyRenewalEnd, err := company.GetIncrementalRenewalCompanyProductMergeSumMoney(conditionRenewalEnd, parsRenewalEnd)
+	//if err != nil {
+	//	br.Msg = "获取失败"
+	//	br.ErrMsg = "获取失败,Err:" + err.Error()
+	//	return
+	//} // 今年结束的续约合同查询条件end
+	//
+	//conditionNew := condition // 新签合同查询条件
+	//parsNew := pars
+	//conditionNew += ` AND a.end_date >= ? AND a.end_date <= ?   `
+	//parsNew = append(parsNew, startDate, endDate)
+	//conditionNew += ` AND a.rai_contract_type = ? `
+	//parsNew = append(parsNew, "新签合同")
+	//totalNew, err := company.GetIncrementalRenewalCompanyProductMergeCount(conditionNew, parsNew)
+	//if err != nil && err.Error() != utils.ErrNoRow() {
+	//	br.Msg = "获取失败"
+	//	br.ErrMsg = "获取失败,Err:" + err.Error()
+	//	return
+	//}
+	//totalMoneyNew, err := company.GetIncrementalRenewalCompanyProductMergeSumMoney(conditionNew, parsNew)
+	//if err != nil {
+	//	br.Msg = "获取失败"
+	//	br.ErrMsg = "获取失败,Err:" + err.Error()
+	//	return
+	//} // 新签合同查询条件 end
+
+	//fmt.Println("totalNew", totalNew)
+	//fmt.Println("totalRenewalEnd", totalRenewalEnd)
+
+	condition1 := condition
+	pars1 := pars
+	//condition1 += ` AND a.start_date >= ? AND a.start_date <= ? `
+	condition1 += ` AND a.end_date >= ? AND a.end_date <= ? `
+	pars1 = append(pars1, startDate, endDate)
+	//condition1 += ` AND a.rai_contract_type = ? `
+	//pars1 = append(pars1, "续约合同")
+	condition1 += ` AND  a.company_ascribe_id  > 0 AND  a.company_ascribe_id  !=9   ` // 已确认未续约
+
+	totalNo, err := company.GetIncrementalRenewalCompanyProductMergeCount(condition1, pars1)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+	totalMoney, err := company.GetIncrementalRenewalCompanyProductMergeSumMoney(condition1, pars1)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+
+	renewalContractTotal = totalNo
+	renewalContractMoney = int(totalMoney)
+	if contractDataType == "续约合同" || contractDataType == "确认不续约合同" {
+		//列表页数据
+		tmpList, err := models.GetIncrementalCompanyMergeListEnd(condition1, pars1, startSize, pageSize)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,Err:" + err.Error()
+			return
+		}
+		list = tmpList
+		dataTotal = totalNo
+	}
+
+	conditionEnd1 := condition
+	parsEnd1 := pars
+
+	//判断结束时间是否晚于当前时间,如果晚于当前时间,那么就把当前时间作为截止时间。并且当前这天的到期的合同,不查询
+	//endDateTime, _ := time.Parse(utils.FormatDate, initendDate)
+	//if endDateTime.After(time.Now()) {
+	//	endDate = time.Now().Format(utils.FormatDate)
+	//	condition1 += ` AND a.end_date >= ? AND a.end_date < ? `
+	//} else {
+	//	condition1 += ` AND a.end_date >= ? AND a.end_date <= ? `
+	//}
+
+	conditionEnd1 += ` AND a.end_date >= ? AND a.end_date <= ?  AND  a.company_ascribe_id  !=9   `
+	parsEnd1 = append(parsEnd1, startDate, endDate)
+
+	//condition1 += ` AND a.start_date  < ?   `
+	//pars1 = append(pars1, startDateTime)
+
+	totalEnd, err := company.GetIncrementalRenewalCompanyProductMergeCount(conditionEnd1, parsEnd1)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+	totalMoneyEnd, err := company.GetIncrementalRenewalCompanyProductMergeSumMoney(conditionEnd1, parsEnd1)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+	expireRenewalContractTotal = totalEnd
+	expireRenewalContractMoney = int(totalMoneyEnd)
+	if contractDataType == "到期合同" {
+		//列表页数据
+		tmpList, err := models.GetIncrementalCompanyMergeListEnd(conditionEnd1, parsEnd1, startSize, pageSize)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,Err:" + err.Error()
+			return
+		}
+		list = tmpList
+		dataTotal = totalEnd
+	}
+
+	//分子或者分母为零的时候,不做计算
+	if totalNo == 0 || totalEnd == 0 {
+		renewalRateMoney = "0%"
+		renewalRateTotal = "0%"
+	} else {
+		renewalRateMoney = fmt.Sprint(utils.SubFloatToString(float64(totalMoney)/float64(totalMoneyEnd)*100, 2), "%")
+		renewalRateTotal = fmt.Sprint(utils.SubFloatToString(float64(totalNo)/float64(totalEnd)*100, 2), "%")
+	}
+	renewalRateTotalContent = fmt.Sprint(int(totalMoney), "/", int(totalMoneyEnd))
+	renewalRateMoneyContent = fmt.Sprint(totalNo, "份/", totalEnd, "份")
+
+	listLen := len(list)
+	if listLen == 0 {
+		list = make([]*models.IncrementalList, 0)
+	}
+	var companyContractIds []int
+	for i := 0; i < listLen; i++ {
+		item := list[i]
+		companyContractIds = append(companyContractIds, item.CompanyContractId)
+	}
+
+	//合同归因标签
+	mapGetCompanyAscribeContent, mapContent := services.GetCompanyContractAscribeContentMap(companyContractIds)
+
+	//合并合同所对应的权限
+	mappermissionName, err := cygxService.GetCompanyContractPermissionNameMapById(companyContractIds)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+	for _, v := range list {
+		v.PermissionName = mappermissionName[v.CompanyContractId]
+		if mapGetCompanyAscribeContent[v.CompanyContractId] != "" {
+			v.Content = mapContent[v.CompanyContractId]
+			v.AscribeContent = mapGetCompanyAscribeContent[v.CompanyContractId]
+			v.IsShowNoRenewedNote = true
+		}
+	}
+
+	page := paging.GetPaging(currentIndex, pageSize, dataTotal)
+	resp := response.IncrementalCompanyPercentageListResp{
+		Paging:                     page,
+		RenewalContractTotal:       renewalContractTotal,
+		RenewalContractMoney:       renewalContractMoney,
+		ExpireRenewalContractTotal: expireRenewalContractTotal,
+		ExpireRenewalContractMoney: expireRenewalContractMoney,
+		RenewalRateMoney:           renewalRateMoney,
+		RenewalRateMoneyContent:    renewalRateMoneyContent,
+		RenewalRateTotal:           renewalRateTotal,
+		RenewalRateTotalContent:    renewalRateTotalContent,
+		List:                       list,
+	}
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}
+
+func init213() {
+	var condition string
+	var pars []interface{}
+
+	condition = " AND  rai_contract_type  = '续约合同'  AND  product_id = 2 "
+
+	var companyContractIds []string
+	companyContractList, e := company.GetCompanyContractList(condition, pars)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		fmt.Println(e)
+		return
+	}
+	for _, v := range companyContractList {
+		fmt.Println(v.CompanyContractId)
+		startDateTime, _ := time.Parse(utils.FormatDate, v.StartDate)
+		startDateTime = startDateTime.AddDate(-1, 0, 0)
+		totalLastYear, err := company.GetCompanyContractCountRaiByLastYear(v.CompanyId, startDateTime.Format(utils.FormatDate))
+		if err != nil {
+			fmt.Println(err)
+			return
+		}
+		if totalLastYear > 0 {
+			companyContractIds = append(companyContractIds, strconv.Itoa(v.CompanyContractId))
+		}
+	}
+	fmt.Println("companyContractIds", len(companyContractIds))
+
+	fmt.Println(strings.Join(companyContractIds, ","))
+	err := company.UpdateCompanyContractRaiContractTypeInit(strings.Join(companyContractIds, ","))
+	fmt.Println(err)
+	return
+}
+
+func init323() {
+	var conditionConfirm string
+	var parsConfirm []interface{}
+
+	companyConfirmList, err := company.GetCompanyContractNoRenewedAscribeList(conditionConfirm, parsConfirm, 0, 0)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		fmt.Println(err)
+		return
+	}
+
+	for _, v := range companyConfirmList {
+		err = company.UpdateCompanyContractCompanyAscribeId(v.CompanyAscribeId, v.CompanyContractId)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			fmt.Println(err)
+			return
+		}
+	}
+}

+ 32 - 16
controllers/statistic_report.go

@@ -6301,7 +6301,8 @@ func (this *StatisticReportController) UnusualRenewCompanyStatistics() {
 		List:        list,
 		SummaryList: summaryList,
 	}
-
+	unusualRenewTotal := make(map[int]int)
+	adminDataUnusualRenewTotal := make(map[int]int)
 	// 每日期组数据的汇总客户id
 	companyIdIndexMap := make(map[int][]string)
 	for k, v := range subAdmins {
@@ -6315,22 +6316,26 @@ func (this *StatisticReportController) UnusualRenewCompanyStatistics() {
 				EndDate:         adminData.EndDate,
 			})
 
+			unusualRenewTotal[index] = unusualRenewTotal[index] + adminData.UnusualRenewMap[v.AdminId]
+
 			if adminData.UnusualRenewIdMap[v.AdminId] != `` {
 				tmpCompanyIdList, ok := companyIdIndexMap[index]
 				if !ok {
 					tmpCompanyIdList = make([]string, 0)
 				}
 				companyIdIndexMap[index] = append(tmpCompanyIdList, adminData.UnusualRenewIdMap[v.AdminId])
+				adminDataUnusualRenewTotal[index] = adminData.FormalCompanyTotal
 			}
 
 			if k == 0 {
-				unusualRate := ``
+				/*unusualRate := ``
 				if adminData.UnusualRenewTotal > 0 && adminData.FormalCompanyTotal > 0 {
 					unusualRate = decimal.NewFromInt(int64(adminData.UnusualRenewTotal)*100).Div(decimal.NewFromInt(int64(adminData.FormalCompanyTotal))).Round(2).String() + `%`
-				}
+				}*/
+
 				summaryList = append(summaryList, statistic_report.SummaryUnusualRenewRecordNum{
-					UnusualRenewNum: adminData.UnusualRenewTotal,
-					UnusualRate:     unusualRate,
+					UnusualRenewNum: 0,
+					UnusualRate:     "0",
 				})
 			}
 		}
@@ -6343,6 +6348,19 @@ func (this *StatisticReportController) UnusualRenewCompanyStatistics() {
 
 	// 汇总数据
 	for index, _ := range summaryList {
+		totalSum, ok1 := unusualRenewTotal[index]
+		if ok1 {
+			summaryList[index].UnusualRenewNum = totalSum
+			unusualRate := ``
+			formalCompanyTotal, ok2 := adminDataUnusualRenewTotal[index]
+			if ok2 {
+				if totalSum > 0 && formalCompanyTotal > 0 {
+					unusualRate = decimal.NewFromInt(int64(totalSum)*100).Div(decimal.NewFromInt(int64(formalCompanyTotal))).Round(2).String() + `%`
+					summaryList[index].UnusualRate = unusualRate
+				}
+			}
+
+		}
 		tmpCompanyIdList, ok := companyIdIndexMap[index]
 		if ok {
 			summaryList[index].UnusualRenewIds = strings.Join(tmpCompanyIdList, ",")
@@ -6412,20 +6430,18 @@ func (this *StatisticReportController) UnusualRenewCompanyList() {
 		tmpDate = tmpDate.AddDate(0, 1, 0)
 
 	}
-	// 只查询咨询组销售下的客户
-	groupId := 0
-	if utils.RunMode == "release" {
-		groupId = 37
-	} else {
-		groupId = 61
+	// 只查询ficc销售下的客户
+	roleTypeCode := "('ficc_seller','ficc_group','ficc_team')"
+	researcherList, err := roadshow.GetSellerList(roleTypeCode, "")
+	if err != nil {
+		return
 	}
-	subAdmins, err := system.GetAdminByGroupId(groupId)
 	if err != nil && err.Error() != utils.ErrNoRow() {
 		br.Msg = "获取销售失败"
 		br.ErrMsg = "获取销售失败,Err:" + err.Error()
 		return
 	}
-	if len(subAdmins) == 0 {
+	if len(researcherList) == 0 {
 		resp = &company.GetUnusualRenewListGroupMonthResp{
 			List: allList,
 		}
@@ -6436,12 +6452,12 @@ func (this *StatisticReportController) UnusualRenewCompanyList() {
 		return
 	}
 	subAdminIds := make([]string, 0)
-	for _, v := range subAdmins {
+	for _, v := range researcherList {
 		subAdminIds = append(subAdminIds, strconv.Itoa(v.AdminId))
 	}
-	shareSellerIds := strings.Join(subAdminIds, ",")
+	sellerIds := strings.Join(subAdminIds, ",")
 
-	list, err := company.GetUnusualRenewList(startDateTimer, endDateTimer, productId, shareSellerIds)
+	list, err := company.GetUnusualRenewList(startDateTimer, endDateTimer, productId, sellerIds)
 	if err != nil {
 		br.Msg = "数据异常"
 		br.ErrMsg = "数据异常,Err:" + err.Error()

+ 25 - 1
models/company/company_contract.go

@@ -26,6 +26,7 @@ type CompanyContract struct {
 	Source            string    `description:"合同来源,枚举值:上传附件、系统合同,默认上传附件"`
 	PackageType       int       `description:"套餐类型,0:无,1:大套餐,2:小套餐"`
 	RaiPackageType    int       `description:"权益套餐类型: 0-无; 1-70w大套餐; 2-45w大套餐"`
+	RaiContractType   string    `description:"权益合同类型:枚举值:'新签合同','续约合同','补充协议'"`
 }
 
 // 新增客户合同
@@ -259,7 +260,7 @@ func UpdateCompanyContractPermissionMulti(items []*CompanyContractPermission) (e
 		}
 	}()
 
-	//批量修改公司剩余点数
+	//批量修改
 	p, err := o.Raw("UPDATE company_contract_permission SET permission_name = ? ,contract_type = ? WHERE id = ?").Prepare()
 	if err != nil {
 		return
@@ -302,6 +303,29 @@ func GetLastContractListByEndDate(companyId, productId int, endDate string) (ite
 	o := orm.NewOrm()
 	sql := "SELECT * FROM company_contract where company_id = ? AND product_id= ? end_date < ? AND status = 1 ORDER BY end_date desc"
 	err = o.Raw(sql, companyId, productId, endDate).QueryRow(&item)
+	return
+}
+
+// 获取权益近一年是否有新签合同
+func GetCompanyContractCountRaiByLastYear(companyId int, startDate string) (count int, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT COUNT(1) AS total FROM company_contract AS a WHERE  product_id = 2  AND   rai_contract_type = '新签合同'  AND  company_id = ?  AND start_date > ? `
+	err = o.Raw(sql, companyId, startDate).QueryRow(&count)
+	return
+}
 
+// UpdateCompanyContractRaiContractType  更新某些合同权益的标识,为新签合同
+func UpdateCompanyContractRaiContractTypeInit(companyContractId string) (err error) {
+	o := orm.NewOrm()
+	sql := `UPDATE company_contract SET rai_contract_type = '新签合同'  WHERE company_contract_id IN  (` + companyContractId + `) `
+	_, err = o.Raw(sql).Exec()
+	return
+}
+
+// UpdateCompanyContractCompanyAscribeId 更改权益未续约归因
+func UpdateCompanyContractCompanyAscribeId(companyAscribId, companyContractId int) (err error) {
+	o := orm.NewOrm()
+	sql := `UPDATE company_contract SET company_ascribe_id = ?  WHERE company_contract_id=? `
+	_, err = o.Raw(sql, companyAscribId, companyContractId).Exec()
 	return
 }

+ 24 - 0
models/company/company_contract_merge.go

@@ -94,3 +94,27 @@ func GetIncrementalNewCompanyProductPermissionCount(condition string, pars []int
 	err = o.Raw(sql, pars).QueryRow(&total)
 	return
 }
+
+// GetIncrementalRenewalCompanyProductMergeSumMoney 对于签约的合同金额进行求和运算
+func GetIncrementalRenewalCompanyProductMergeSumMoney(condition string, pars []interface{}) (total float64, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+			SUM( a.money ) AS total 
+		FROM
+			company_contract a
+			JOIN company b ON a.company_id = b.company_id
+			JOIN company_product c ON a.company_id = c.company_id 
+			AND a.product_id = c.product_id 
+		WHERE
+			1 = 1 `
+	if condition != "" {
+		sql += condition
+	}
+	err = o.Raw(sql, pars).QueryRow(&total)
+	return
+}
+
+// 权益客户统计,续约率搜索自然年的年份,返回类
+type SearchYearListResp struct {
+	List []int
+}

+ 8 - 0
models/company/company_contract_no_renewed_ascribe.go

@@ -80,6 +80,10 @@ func AddCompanyContractNoRenewedAscribe(item *CompanyContractNoRenewedAscribe, i
 	}
 
 	_, err = to.Insert(itemLog)
+
+	//修改未续约归因
+	sql := `UPDATE company_contract SET company_ascribe_id = ?  WHERE company_contract_id=? `
+	_, err = to.Raw(sql, item.CompanyAscribeId, item.CompanyContractId).Exec()
 	return
 }
 
@@ -113,6 +117,10 @@ func UpdateCompanyContractNoRenewedAscribe(item *CompanyContractNoRenewedAscribe
 		return
 	}
 	_, err = to.Insert(itemLog)
+
+	//修改未续约归因
+	sql := `UPDATE company_contract SET company_ascribe_id = ?  WHERE company_contract_id=? `
+	_, err = to.Raw(sql, item.CompanyAscribeId, item.CompanyContractId).Exec()
 	return
 }
 

+ 2 - 2
models/company/company_renewal_record.go

@@ -78,7 +78,7 @@ type GetUnusualRenewListGroupMonthResp struct {
 }
 
 // GetUnusualRenewList 获取未续约公司列表
-func GetUnusualRenewList(startDate, endDate time.Time, productId int, shareSellerIds string) (list []*CompanyRenewalRecord, err error) {
+func GetUnusualRenewList(startDate, endDate time.Time, productId int, sellerIds string) (list []*CompanyRenewalRecord, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT
 	* 
@@ -89,7 +89,7 @@ WHERE
 	AND modify_time BETWEEN ? 
 	AND ? 
 	AND product_id = ?
-	AND share_seller_id in (` + shareSellerIds + `)
+	AND seller_id in (` + sellerIds + `)
 `
 	_, err = o.Raw(sql, startDate, endDate, productId).QueryRows(&list)
 

+ 14 - 0
models/response/statistic_report.go

@@ -129,3 +129,17 @@ type RenewReasonItemResp struct {
 type CompanyPreviousDetailResp struct {
 	Detail *models.IncrementalList
 }
+
+// 权益客户统计,续约率,返回类
+type IncrementalCompanyPercentageListResp struct {
+	Paging                     *paging.PagingItem `description:"分页数据"`
+	List                       []*models.IncrementalList
+	RenewalRateMoney           string `description:"合同金额续约率"`
+	RenewalRateMoneyContent    string `description:"合同金额续约率详情"`
+	RenewalRateTotal           string `description:"合同数量续约率"`
+	RenewalRateTotalContent    string `description:"合同数量续约率详情"`
+	RenewalContractTotal       int    `description:"续约合同数量"`
+	RenewalContractMoney       int    `description:"续约合同总金额"`
+	ExpireRenewalContractTotal int    `description:"到期合同数量"`
+	ExpireRenewalContractMoney int    `description:"到期合同总金额"`
+}

+ 17 - 12
models/statistic_report.go

@@ -861,7 +861,23 @@ func GetIncrementalCompanyMergeList(condition string, pars []interface{}, startS
 	if condition != "" {
 		sql += condition
 	}
-	sql += ` group by a.company_contract_id  order by start_date desc,company_id desc limit ?,?`
+	sql += ` group by a.company_contract_id  order by a.start_date desc,a.company_id desc limit ?,?`
+	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	return
+}
+
+// GetIncrementalNewCompanyList 获取到期合同列表数据(根据合同来展示)
+func GetIncrementalCompanyMergeListEnd(condition string, pars []interface{}, startSize, pageSize int) (items []*IncrementalList, err error) {
+	o := orm.NewOrm()
+
+	sql := `SELECT a.*,b.region_type,c.seller_id,c.seller_name,b.company_name,c.renewal_reason FROM company_contract a
+		 JOIN company b ON a.company_id = b.company_id
+		 JOIN company_product c ON a.company_id = c.company_id and a.product_id=c.product_id WHERE 1 = 1 `
+
+	if condition != "" {
+		sql += condition
+	}
+	sql += ` group by a.company_contract_id  order by a.end_date desc,a.company_id desc limit ?,?`
 	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
 	return
 }
@@ -870,17 +886,6 @@ func GetIncrementalCompanyMergeList(condition string, pars []interface{}, startS
 func GetIncrementalCompanyListByOperationRecordMerge(condition string, pars []interface{}, startSize, pageSize int) (items []*IncrementalList, err error) {
 	o := orm.NewOrm()
 
-	////查询出最大id
-	//sql1 := `SELECT max(id) id FROM company_operation_record a
-	//	RIGHT JOIN company b ON a.company_id = b.company_id
-	//	JOIN company_product c ON b.company_id = c.company_id
-	//	AND a.product_id = c.product_id
-	//WHERE 1 = 1 `
-	//if condition != "" {
-	//	sql1 += condition
-	//}
-	//sql1 += ` GROUP BY a.company_id, a.product_id `
-
 	//查询真正的数据
 	sql := `SELECT a.company_contract_id,a.contract_type ,a.company_product_id ,a.contract_code ,a.pay_method ,a.pay_channel ,a.package_difference ,a.company_id, a.start_date, a.end_date, a.money, b.company_name, c.seller_id, c.seller_name, a.product_id, a.product_name, a.create_time, b.region_type, c.renewal_reason, c.renewal_todo, c.status FROM company_contract a
 		RIGHT JOIN company b ON a.company_id = b.company_id

+ 27 - 0
routers/commentsRouter.go

@@ -10402,6 +10402,24 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:StatisticCompanyMergerController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:StatisticCompanyMergerController"],
+        beego.ControllerComments{
+            Method: "CompanyContractPercentageList",
+            Router: `/merge_company/company_contract_percentage/list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:StatisticCompanyMergerController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:StatisticCompanyMergerController"],
+        beego.ControllerComments{
+            Method: "CompanyContractPercentageListV2",
+            Router: `/merge_company/company_contract_percentage/listV2`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:StatisticCompanyMergerController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:StatisticCompanyMergerController"],
         beego.ControllerComments{
             Method: "CompanyContractPermissionList",
@@ -10411,6 +10429,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:StatisticCompanyMergerController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:StatisticCompanyMergerController"],
+        beego.ControllerComments{
+            Method: "GetYearList",
+            Router: `/merge_company/get_year_list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:StatisticCompanyMergerController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:StatisticCompanyMergerController"],
         beego.ControllerComments{
             Method: "MergeCompanyList",

+ 29 - 0
services/cygx/activity_meet.go

@@ -7,6 +7,7 @@ import (
 	"hongze/hz_crm_api/models/cygx"
 	"hongze/hz_crm_api/services/alarm_msg"
 	"hongze/hz_crm_api/utils"
+	"strconv"
 )
 
 // 获取线上活动到会更新时间
@@ -438,3 +439,31 @@ func AddctivitySignupDetailListByAdminSignup(activityIdsStr string) (err error)
 
 	return err
 }
+
+func init77777() {
+	var condition string
+	var pars []interface{}
+
+	listAct, errList := cygx.GetActivityListAll(condition+"AND active_state = 3 AND activity_id > 3000  AND publish_status = 1 ", pars, 0, 9999)
+	if errList != nil {
+		fmt.Println(errList)
+		return
+	}
+
+	fmt.Println(len(listAct))
+
+	for _, v := range listAct {
+		condition = ` AND a.activity_id  = ` + strconv.Itoa(v.ActivityId)
+		//pars = append(pars)
+		list, e := cygx.GetCygxActivityAttendanceDetailList(condition, pars, 0, 999)
+		if e != nil {
+			fmt.Println(e)
+			return
+		}
+
+		fmt.Println("ActivityId", v.ActivityId, "list", len(list))
+
+		AddctivitySignupDetailListByHand(list, v.ActivityId)
+	}
+
+}