浏览代码

no message

zhangchuanxing 3 月之前
父节点
当前提交
fc0f8f1ea1
共有 3 个文件被更改,包括 264 次插入50 次删除
  1. 39 31
      controllers/statistic_company_merge.go
  2. 196 19
      controllers/statistic_report.go
  3. 29 0
      models/statistic_report.go

+ 39 - 31
controllers/statistic_company_merge.go

@@ -109,21 +109,21 @@ func (this *StatisticCompanyMergerController) MergeCompanyList() {
 	var pars []interface{}
 
 	//条件
-	if adminId != "" {
-		//condition += ` AND a.seller_id_init in  (` + adminId + `) `
-		//condition += ` AND c.seller_id in  (` + adminId + `) `
-		//pars = append(pars, adminId)
-	} else {
-
-		if dataType == "未续约客户" {
-			//根据当前角色来获取查询条件
-			condition, pars = getQueryParams(condition, pars, sysUser, "c.")
-		} else {
-			//根据当前角色来获取查询条件
-			condition, pars = getQueryParamsInit(condition, pars, sysUser, "c.")
-		}
-
-	}
+	//if adminId != "" {
+	//	//condition += ` AND a.seller_id_init in  (` + adminId + `) `
+	//	//condition += ` AND c.seller_id in  (` + adminId + `) `
+	//	//pars = append(pars, adminId)
+	//} else {
+	//
+	//	//if dataType == "未续约客户" {
+	//	//	//根据当前角色来获取查询条件
+	//	//	condition, pars = getQueryParams(condition, pars, sysUser, "c.")
+	//	//} else {
+	//	//	//根据当前角色来获取查询条件
+	//	//	condition, pars = getQueryParamsInit(condition, pars, sysUser, "c.")
+	//	//}
+	//
+	//}
 	if regionType != "" {
 		condition += ` AND b.region_type = ? `
 		pars = append(pars, regionType)
@@ -216,12 +216,14 @@ func (this *StatisticCompanyMergerController) MergeCompanyList() {
 	{
 		condition1 := condition
 		pars1 := pars
-		condition1 += ` AND a.create_time >= ? AND a.create_time <= ? AND a.operation in ("add","receive")  	AND b.company_id  NOT IN  (	SELECT  company_id  FROM company_operation_record WHERE   product_id = 2 	AND  operation  ="loss"   GROUP BY company_id ) `
-		pars1 = append(pars1, startDate, endDate)
 		//销售筛选条件
 		if adminId != "" {
 			condition1 += ` AND c.seller_id in  (` + adminId + `) `
+		} else {
+			condition1, pars1 = getQueryParams(condition1, pars1, sysUser, "c.")
 		}
+		condition1 += ` AND a.create_time >= ? AND a.create_time <= ? AND a.operation in ("add","receive")  	AND b.company_id  NOT IN  (	SELECT  company_id  FROM company_operation_record WHERE   product_id = 2 	AND  operation  ="loss"   GROUP BY company_id ) `
+		pars1 = append(pars1, startDate, endDate)
 
 		total, err := models.GetIncrementalCompanyCountByOperationRecord(condition1, pars1)
 		if err != nil && err.Error() != utils.ErrNoRow() {
@@ -257,20 +259,18 @@ func (this *StatisticCompanyMergerController) MergeCompanyList() {
 
 	//新签客户数
 	{
-
-		condition += `  AND  a.status = 1 `
-
 		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, "新签合同")
-
 		//销售筛选条件
 		if adminId != "" {
 			condition1 += ` AND a.seller_id_init in  (` + adminId + `) `
+		} else {
+			condition1, pars1 = getQueryParamsInit(condition1, pars1, sysUser, "c.")
 		}
+		condition1 += ` AND  a.status = 1  AND a.start_date >= ?  AND a.start_date <= ?  `
+		pars1 = append(pars1, startDate, endDate)
+		condition1 += `  AND a.rai_contract_type = ? `
+		pars1 = append(pars1, "新签合同")
 
 		newCompanyTotal, err = company.GetIncrementalNewCompanyProductMergeCount(condition1, pars1)
 		if err != nil && err.Error() != utils.ErrNoRow() {
@@ -302,18 +302,17 @@ func (this *StatisticCompanyMergerController) MergeCompanyList() {
 
 	//续约客户数
 	{
-
-		condition += `  AND  a.status = 1 `
-
 		condition1 := condition
 		pars1 := pars
-		condition1 += ` AND a.start_date >= ? AND a.start_date <= ? `
+		condition1 += ` AND  a.status = 1 AND a.start_date >= ? AND a.start_date <= ? `
 		pars1 = append(pars1, startDate, endDate)
 		condition1 += ` AND a.rai_contract_type = ? `
 		pars1 = append(pars1, "续约合同")
 		//销售筛选条件
 		if adminId != "" {
 			condition1 += ` AND a.seller_id_init in  (` + adminId + `) `
+		} else {
+			condition1, pars1 = getQueryParamsInit(condition1, pars1, sysUser, "c.")
 		}
 		////额外条件(续约合同的起始日期包含在所选时间段内且不包含在新签合同存续期内的客户)
 		//pars1 = append(pars1, endDate)
@@ -358,6 +357,9 @@ func (this *StatisticCompanyMergerController) MergeCompanyList() {
 		condition1 := condition
 		pars1 := pars
 
+		condition1 += condition
+		pars1 = append(pars1, pars)
+
 		condition1 += ` AND a.end_date >= ? AND a.end_date  <= ? `
 		pars1 = append(pars1, startDate, endDate)
 		//condition1 += ` AND a.operation = ? `
@@ -366,7 +368,9 @@ func (this *StatisticCompanyMergerController) MergeCompanyList() {
 
 		//销售筛选条件
 		if adminId != "" {
-			condition1 += ` AND c.seller_id in  (` + adminId + `) `
+			condition1 += ` AND a.seller_id_last in  (` + adminId + `) `
+		} else {
+			condition1, pars1 = getQueryParamsLast(condition1, pars1, sysUser, "c.")
 		}
 
 		//未续约已确认数量
@@ -381,7 +385,6 @@ func (this *StatisticCompanyMergerController) MergeCompanyList() {
 			return
 		}
 		notRenewalCompanyTotal = total
-
 		//未续约待确认数量
 		notRenewalToBeCondition := condition1
 		notRenewalToBePars := pars1
@@ -2418,3 +2421,8 @@ func init16_1_03() {
 		}
 	}
 }
+
+//更新权益销客户后一个正式的销售为当前销售
+//func init(){
+//	SELECT * FROM company_product  WHERE 1= 1  AND  product_id =2   AND  share_seller_id > 0 ;
+//}

+ 196 - 19
controllers/statistic_report.go

@@ -112,7 +112,7 @@ func getQueryParams(condition string, pars []interface{}, sysUser *system.Admin,
 	return
 }
 
-// getQueryParams 获取基础查询信息(最开始关联的销售信息)
+// getQueryParamsInit 获取基础查询信息(最开始关联的销售信息)
 func getQueryParamsInit(condition string, pars []interface{}, sysUser *system.Admin, tableAlias string) (newCondition string, newPars []interface{}) {
 	if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_ADMIN {
 		condition += " AND " + tableAlias + "product_id=?"
@@ -126,7 +126,7 @@ func getQueryParamsInit(condition string, pars []interface{}, sysUser *system.Ad
 		//如果不是研究员,那么去找对应的 部门、小组、销售
 		if sysUser.Authority == 0 {
 			//普通用户
-			condition += " AND " + tableAlias + "seller_id_init=?"
+			condition += " AND a.seller_id_init=?"
 			pars = append(pars, sysUser.AdminId)
 		} else if sysUser.Authority == 1 {
 			//部门主管
@@ -176,7 +176,153 @@ func getQueryParamsInit(condition string, pars []interface{}, sysUser *system.Ad
 			pars = append(pars, sysUser.GroupId)
 		} else {
 			//不知道什么类型的用户(后面新增的位置类型客户)
-			condition += " AND " + tableAlias + "seller_id_init=?"
+			condition += " AND a.seller_id_init=?"
+			pars = append(pars, sysUser.AdminId)
+		}
+	}
+	newCondition = condition
+	newPars = pars
+	return
+}
+
+// getQueryParams 获取基础查询信息(最开始关联的销售信息)
+func getQueryParamsLast(condition string, pars []interface{}, sysUser *system.Admin, tableAlias string) (newCondition string, newPars []interface{}) {
+	if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_ADMIN {
+		condition += " AND " + tableAlias + "product_id=?"
+		pars = append(pars, 1)
+	} else if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN {
+		condition += " AND " + tableAlias + "product_id=?"
+		pars = append(pars, 2)
+	} else if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_ADMIN || sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FINANCE {
+		//超级管理员账户,不做条件限制
+	} else {
+		//如果不是研究员,那么去找对应的 部门、小组、销售
+		if sysUser.Authority == 0 {
+			//普通用户
+			condition += " AND a.seller_id_last=?"
+			pars = append(pars, sysUser.AdminId)
+		} else if sysUser.Authority == 1 {
+			//部门主管
+			condition += " AND " + tableAlias + "department_id=?"
+			pars = append(pars, sysUser.DepartmentId)
+		} else if sysUser.Authority == 2 && sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_GROUP {
+			//权益小组负责人
+			condition += " AND " + tableAlias + "group_id=?"
+			pars = append(pars, sysUser.GroupId)
+		} else if sysUser.Authority == 2 && sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_GROUP {
+			//ficc销售主管
+			pid, err := company.GetParentIdFromGroup(sysUser.GroupId)
+			if err != nil {
+				fmt.Println(err.Error())
+				return
+			}
+			var ids []*string
+			if pid != nil && *pid != 0 {
+				ids, err = company.GetGroupIdsByParentId(*pid)
+				if err != nil {
+					fmt.Println(err.Error())
+				}
+			} else {
+				ids, err = company.GetGroupIdsByParentId(sysUser.GroupId)
+				if err != nil {
+					fmt.Println(err.Error())
+				}
+			}
+			var idSlice []string
+			var sid string
+			for _, id := range ids {
+				idSlice = append(idSlice, *id)
+			}
+			//加入父级groupId
+			if *pid > 0 {
+				idSlice = append(idSlice, strconv.Itoa(*pid))
+			} else {
+				idSlice = append(idSlice, strconv.Itoa(sysUser.GroupId))
+			}
+			sid = strings.Join(idSlice, ",")
+			condition += " AND " + tableAlias + `group_id IN (` + sid + `) `
+			fmt.Println("condition:", condition)
+			//pars = append(pars, sysUser.GroupId)
+		} else if sysUser.Authority == 4 {
+			//ficc小组负责人
+			condition += " AND " + tableAlias + "group_id=?"
+			pars = append(pars, sysUser.GroupId)
+		} else {
+			//不知道什么类型的用户(后面新增的位置类型客户)
+			condition += " AND a.seller_id_last=?"
+			pars = append(pars, sysUser.AdminId)
+		}
+	}
+	newCondition = condition
+	newPars = pars
+	return
+}
+
+// getQueryParamsLastCompanyProduct 获取基础查询信息(最后一次正式转试用的时间点)
+func getQueryParamsLastCompanyProduct(condition string, pars []interface{}, sysUser *system.Admin, tableAlias string) (newCondition string, newPars []interface{}) {
+	if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_ADMIN {
+		condition += " AND " + tableAlias + "product_id=?"
+		pars = append(pars, 1)
+	} else if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN {
+		condition += " AND " + tableAlias + "product_id=?"
+		pars = append(pars, 2)
+	} else if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_ADMIN || sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FINANCE {
+		//超级管理员账户,不做条件限制
+	} else {
+		//如果不是研究员,那么去找对应的 部门、小组、销售
+		if sysUser.Authority == 0 {
+			//普通用户
+			condition += " AND " + tableAlias + "seller_id_last=?"
+			pars = append(pars, sysUser.AdminId)
+		} else if sysUser.Authority == 1 {
+			//部门主管
+			condition += " AND " + tableAlias + "department_id=?"
+			pars = append(pars, sysUser.DepartmentId)
+		} else if sysUser.Authority == 2 && sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_GROUP {
+			//权益小组负责人
+			condition += " AND " + tableAlias + "group_id=?"
+			pars = append(pars, sysUser.GroupId)
+		} else if sysUser.Authority == 2 && sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_GROUP {
+			//ficc销售主管
+			pid, err := company.GetParentIdFromGroup(sysUser.GroupId)
+			if err != nil {
+				fmt.Println(err.Error())
+				return
+			}
+			var ids []*string
+			if pid != nil && *pid != 0 {
+				ids, err = company.GetGroupIdsByParentId(*pid)
+				if err != nil {
+					fmt.Println(err.Error())
+				}
+			} else {
+				ids, err = company.GetGroupIdsByParentId(sysUser.GroupId)
+				if err != nil {
+					fmt.Println(err.Error())
+				}
+			}
+			var idSlice []string
+			var sid string
+			for _, id := range ids {
+				idSlice = append(idSlice, *id)
+			}
+			//加入父级groupId
+			if *pid > 0 {
+				idSlice = append(idSlice, strconv.Itoa(*pid))
+			} else {
+				idSlice = append(idSlice, strconv.Itoa(sysUser.GroupId))
+			}
+			sid = strings.Join(idSlice, ",")
+			condition += " AND " + tableAlias + `group_id IN (` + sid + `) `
+			fmt.Println("condition:", condition)
+			//pars = append(pars, sysUser.GroupId)
+		} else if sysUser.Authority == 4 {
+			//ficc小组负责人
+			condition += " AND " + tableAlias + "group_id=?"
+			pars = append(pars, sysUser.GroupId)
+		} else {
+			//不知道什么类型的用户(后面新增的位置类型客户)
+			condition += " AND  " + tableAlias + "seller_id_last=?"
 			pars = append(pars, sysUser.AdminId)
 		}
 	}
@@ -6903,14 +7049,14 @@ func getTodayStackCompanyListV2Rai(sysUser *system.Admin, currentIndex, pageSize
 		parsAscribeRai = append(parsAscribeRai, companyIds)
 	}
 
-	if adminId != "" {
-		//condition += ` AND c.seller_id in  (` + adminId + `) `
-		//pars = append(pars, adminId)
-	} else {
-		//根据当前角色来获取查询条件
-		condition, pars = getQueryParamsInit(condition, pars, sysUser, "c.")
-
-	}
+	//if adminId != "" {
+	//	//condition += ` AND c.seller_id in  (` + adminId + `) `
+	//	//pars = append(pars, adminId)
+	//} else {
+	//	//根据当前角色来获取查询条件
+	//	condition, pars = getQueryParamsInit(condition, pars, sysUser, "c.")
+	//
+	//}
 	if regionType != "" {
 		condition += ` AND b.region_type = ? `
 		pars = append(pars, regionType)
@@ -6926,13 +7072,31 @@ func getTodayStackCompanyListV2Rai(sysUser *system.Admin, currentIndex, pageSize
 	var dataTotal, newCompanyTotal, renewalCompanyTotal, notRenewalCompanyTotal int
 	var notRenewalTryOut, notRenewalNotTryOut int
 	var list []*models.IncrementalList
+
+	//var condition1 string
+	//var pars1 []interface{}
 	//新签客户数
 	{
+		//if adminId != "" {
+		//	//condition += ` AND c.seller_id in  (` + adminId + `) `
+		//	//pars = append(pars, adminId)
+		//} else {
+		//	//根据当前角色来获取查询条件
+		//	condition, pars = getQueryParamsInit(condition, pars, sysUser, "c.")
+		//
+		//}
 		condition1 := condition
+		pars1 := pars
 		if adminId != "" {
 			condition1 += ` AND a.seller_id_init in  (` + adminId + `) `
+		} else {
+			condition1, pars1 = getQueryParamsInit(condition1, pars1, sysUser, "c.")
+			//condition1 += condition2
+			//pars1 = append(pars1, pars2)
 		}
-		pars1 := pars
+
+		//condition1 += condition
+		//pars1 := pars
 		//condition1 += ` AND c.status = "正式"  `
 		condition1 += ` AND a.start_date <= ? AND a.end_date >= ? `
 		pars1 = append(pars1, today, today)
@@ -6961,12 +7125,16 @@ func getTodayStackCompanyListV2Rai(sysUser *system.Admin, currentIndex, pageSize
 
 	//续约客户数
 	{
-
 		condition1 := condition
+		pars1 := pars
 		if adminId != "" {
 			condition1 += ` AND a.seller_id_init in  (` + adminId + `) `
+		} else {
+			condition1, pars1 = getQueryParamsInit(condition1, pars1, sysUser, "c.")
 		}
-		pars1 := pars
+		//condition1 += condition
+		//pars1 = append(pars1, pars)
+		//pars1 := pars
 		//condition1 += ` AND c.status  = "正式" `
 		condition1 += ` AND a.start_date <= ? AND a.end_date >= ? `
 		pars1 = append(pars1, today, today)
@@ -6994,14 +7162,22 @@ func getTodayStackCompanyListV2Rai(sysUser *system.Admin, currentIndex, pageSize
 			listPars = pars1
 		}
 	}
-
 	//未续约客户数
 	{
-		if adminId != "" {
-			condition += ` AND c.seller_id in  (` + adminId + `) `
-		}
 		condition1 := condition
 		pars1 := pars
+		if adminId != "" {
+			//condition1 += ` AND a.seller_id_last in  (` + adminId + `) `
+			condition1 += ` AND c.seller_id_last in  (` + adminId + `) `
+		} else {
+			condition1, pars1 = getQueryParamsLastCompanyProduct(condition1, pars1, sysUser, "c.")
+		}
+
+		//condition1 += condition
+		//pars1 = append(pars1, pars)
+
+		//condition1 := condition
+		//pars1 := pars
 		condition1 += ` AND c.status not in ("永续","正式") AND a.create_time <= ? `
 		pars1 = append(pars1, time.Now().Format(utils.FormatDateTime))
 		condition1 += ` AND a.operation = 'try_out' `
@@ -7011,6 +7187,7 @@ func getTodayStackCompanyListV2Rai(sysUser *system.Admin, currentIndex, pageSize
 			err = countErr
 			return
 		}
+
 		notRenewalCompanyTotal = total
 		condition1 += conditionAscribRai
 		pars1 = append(pars1, parsAscribeRai)
@@ -7061,7 +7238,7 @@ func getTodayStackCompanyListV2Rai(sysUser *system.Admin, currentIndex, pageSize
 			} else if tryOutType == "非试用" {
 				listCondition += ` AND c.status IN ("冻结","流失") `
 			}
-			tmpList, countErr := models.GetIncrementalCompanyListByOperationRecord(listCondition, listPars, startSize, pageSize)
+			tmpList, countErr := models.GetIncrementalCompanyListByOperationRecordLast(listCondition, listPars, startSize, pageSize)
 			if countErr != nil {
 				err = countErr
 				return

+ 29 - 0
models/statistic_report.go

@@ -808,6 +808,35 @@ where a.id in (` + sql1 + `) order by  create_time DESC,company_id DESC limit ?,
 	return
 }
 
+// GetIncrementalCompanyListByOperationRecordLast 获取试用客户报表列表数据(根据新增客户时间来展示)
+func GetIncrementalCompanyListByOperationRecordLast(condition string, pars []interface{}, startSize, pageSize int) (items []*IncrementalList, err error) {
+	o := orm.NewOrm()
+	//	sql := `SELECT a.id,a.company_id,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.status 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 `
+
+	//查询出最大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.id, a.company_id, b.company_name, c.seller_id_last AS seller_id, c.seller_name_last  AS seller_name_init, c.share_seller_last  AS share_seller, a.product_id, a.product_name, a.create_time, b.region_type, c.renewal_reason, c.renewal_todo, c.status 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 a.id in (` + sql1 + `) order by  create_time DESC,company_id DESC limit ?,?`
+	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	return
+}
+
 // 根据操作记录获取其他增量客户报表列表数据(根据新增客户时间来展示)
 func GetOtherIncrementalCompanyListByOperationRecord(companyIds, condition string, pars []interface{}) (items []*IncrementalList, err error) {
 	o := orm.NewOrm()