浏览代码

no message

xingzai 1 年之前
父节点
当前提交
112a647b05
共有 2 个文件被更改,包括 288 次插入0 次删除
  1. 279 0
      controllers/statistic_company_merge.go
  2. 9 0
      routers/commentsRouter.go

+ 279 - 0
controllers/statistic_company_merge.go

@@ -1502,6 +1502,285 @@ func (this *StatisticCompanyMergerController) GetYearList() {
 	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 <= ? `
+	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
+
+	startDateTime, _ := time.Parse(utils.FormatDate, startDate)
+	startDateTime = startDateTime.AddDate(-1, 0, 0) //合同开始时间,与查询的结束时间,之间相差的天数大于  365天。
+
+	conditionRenewalEnd += ` AND a.end_date >= ? AND a.end_date <= ?   AND a.start_date  < ?   `
+	parsRenewalEnd = append(parsRenewalEnd, startDate, endDate, startDate)
+	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 <= ?   AND a.start_date  < ?  `
+	parsNew = append(parsNew, startDate, endDate, startDate)
+	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)
+
+		condition1 += ` AND a.start_date  < ?   `
+		pars1 = append(pars1, startDate)
+
+		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.GetIncrementalCompanyMergeList(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
+}
+
 func init213() {
 	var condition string
 	var pars []interface{}

+ 9 - 0
routers/commentsRouter.go

@@ -10402,6 +10402,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: "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",