浏览代码

no message

zhangchuanxing 1 周之前
父节点
当前提交
019c58535b

+ 130 - 21
controllers/statistic/rai_data_summary.go

@@ -52,17 +52,15 @@ func (this *StatisticRaiDataSummaryController) RaiDataSummaryList() {
 		return
 	}
 
-	//adminId := this.GetString("AdminId")
 	dataType := this.GetString("DataType")
 	adminId := this.GetString("AdminId")
 	serviceAdminId := this.GetString("ServiceAdminId")
 	startYear, _ := this.GetInt("StartYear")
 	endYear, _ := this.GetInt("EndYear")
-	developButton, _ := this.GetInt("DevelopButton")
-	serverButton, _ := this.GetInt("ServerButton")
+	developButton, _ := this.GetBool("DevelopButton")
+	serverButton, _ := this.GetBool("ServerButton")
 
 	dataTypeArr := []string{}
-	//var dateIntervalArr []statistic_report.DateInterval //时间区间
 	if dataType == "季度" {
 		dataTypeArr = []string{"Q1", "Q2", "Q3", "Q4"}
 	} else if dataType == "半年度" {
@@ -81,11 +79,11 @@ func (this *StatisticRaiDataSummaryController) RaiDataSummaryList() {
 		condition += " AND  admin_id IN (" + serviceAdminId + ") "
 	}
 
-	if developButton == 1 && serverButton == 0 && adminId == "" && serviceAdminId == "" { //开拓组筛选条件
+	if developButton && !serverButton && adminId == "" && serviceAdminId == "" { //开拓组筛选条件
 		condition += " AND  real_name   NOT LIKE '%6%' "
 	}
 
-	if developButton == 0 && serverButton == 1 && adminId == "" && serviceAdminId == "" { //服务组筛选条件
+	if !developButton && serverButton && adminId == "" && serviceAdminId == "" { //服务组筛选条件
 		condition += " AND  real_name   LIKE '%6%' "
 	}
 
@@ -111,6 +109,7 @@ func (this *StatisticRaiDataSummaryController) RaiDataSummaryList() {
 	startDate := fmt.Sprintf("%d-01-01", startYear)
 	endDate := fmt.Sprintf("%d-12-31", endYear)
 
+	//新签部分的数据
 	var conditionRai string
 	var parsRai []interface{}
 	conditionRai = " AND  a.product_id = 2  AND  a.status = 1  AND  a.start_date >= ?  AND  a.start_date <= ? "
@@ -122,6 +121,30 @@ func (this *StatisticRaiDataSummaryController) RaiDataSummaryList() {
 		return
 	}
 
+	//续约部分的数据
+	var conditionInherit string
+	var parsInherit []interface{}
+	conditionInherit = " AND  a.product_id = 2  AND  a.status = 1  AND  a.inherit_end_date >= ?  AND  a.inherit_end_date <= ? "
+	parsInherit = append(parsInherit, startDate, endDate)
+	listInheritData, err := statistic_report.GetRaiDataSummaryInheritList(conditionInherit, parsInherit)
+	if err != nil {
+		br.Msg = "获取数据信息失败"
+		br.ErrMsg = "获取数据信息失败,Err:" + err.Error()
+		return
+	}
+
+	//确认不续约、到期合同部分的数据
+	var conditionEnd string
+	var parsEnd []interface{}
+	conditionEnd = " AND  a.product_id = 2  AND  a.status = 1  AND  a.end_date >= ?  AND  a.end_date <= ? "
+	parsEnd = append(parsEnd, startDate, endDate)
+	listEndData, err := statistic_report.GetRaiDataSummaryList(conditionEnd, parsEnd)
+	if err != nil {
+		br.Msg = "获取数据信息失败"
+		br.ErrMsg = "获取数据信息失败,Err:" + err.Error()
+		return
+	}
+
 	var conditionConfirm string
 	var parsConfirm []interface{}
 	mapNoRenewedcompanyContractIds := make(map[int]bool) //已经确定未续约的合同ID
@@ -155,6 +178,7 @@ func (this *StatisticRaiDataSummaryController) RaiDataSummaryList() {
 	var keyMap string
 	var keyMapTtoal string
 	var keyMapTtoalServer string
+	//新签部分的数据
 	for _, v := range listRaiData {
 		startDateTime := utils.StrDateToDate(v.StartDate)
 		monthNum := startDateTime.Month()
@@ -190,22 +214,112 @@ func (this *StatisticRaiDataSummaryController) RaiDataSummaryList() {
 
 			mapNewContractMoney[keyMapTtoal] += v.Money
 			mapNewContractNum[keyMapTtoal]++
-		} else if v.RaiContractType == "续约合同" {
-			mapRenewedContractMoney[keyMap] += v.Money
-			mapRenewedContractNum[keyMap]++
+		}
+		//else if v.RaiContractType == "续约合同" {
+		//	mapRenewedContractMoney[keyMap] += v.Money
+		//	mapRenewedContractNum[keyMap]++
+		//
+		//	mapRenewedContractMoney[keyMapTtoal] += v.Money
+		//	mapRenewedContractNum[keyMapTtoal]++
+		//}
+
+		//if startDateTime.Before(time.Now().AddDate(0, 0, -1)) { //到期合同数据
+		//	mapExpiredContractMoney[keyMap] += v.Money
+		//	mapExpiredContractNum[keyMap]++
+		//
+		//	mapExpiredContractMoney[keyMapTtoal] += v.Money
+		//	mapExpiredContractNum[keyMapTtoal]++
+		//}
+		//
+		//if mapNoRenewedcompanyContractIds[v.CompanyContractId] { // 确认不续约合同
+		//	confirmedNoRenewalContractMoney[keyMap] += v.Money
+		//	confirmedNoRenewalContractNum[keyMap]++
+		//
+		//	confirmedNoRenewalContractMoney[keyMapTtoal] += v.Money
+		//	confirmedNoRenewalContractNum[keyMapTtoal]++
+		//}
+		mapSignedClientMoney[keyMap] += v.Money
+		mapSignedClientNum[keyMap]++
+
+		mapSignedClientMoney[keyMapTtoal] += v.Money
+		mapSignedClientNum[keyMapTtoal]++
+	}
+
+	//续约部分的数据
+	for _, v := range listInheritData {
+		startDateTime := utils.StrDateToDate(v.InheritEndDate)
+		monthNum := startDateTime.Month()
+		yearStr := strconv.Itoa(startDateTime.Year())
+		if dataType == "季度" {
+			if monthNum < 4 {
+				yearStr += "Q1"
+			} else if monthNum > 3 && monthNum < 7 {
+				yearStr += "Q2"
+			} else if monthNum > 6 && monthNum < 10 {
+				yearStr += "Q3"
+			} else if monthNum > 9 {
+				yearStr += "Q4"
+			}
+		} else if dataType == "半年度" {
+			if monthNum < 7 {
+				yearStr += "H1"
+			} else {
+				yearStr += "H2"
+			}
+		}
 
-			mapRenewedContractMoney[keyMapTtoal] += v.Money
-			mapRenewedContractNum[keyMapTtoal]++
+		keyMap = fmt.Sprint(yearStr, "_", v.SellerIdLast)
+		if sellerDevelopIds[v.SellerIdLast] == true {
+			keyMapTtoal = fmt.Sprint(yearStr, "_Develop")
+		} else {
+			keyMapTtoal = fmt.Sprint(yearStr, "_Service")
 		}
 
-		if startDateTime.Before(time.Now().AddDate(0, 0, -1)) { //到期合同数据
-			mapExpiredContractMoney[keyMap] += v.Money
-			mapExpiredContractNum[keyMap]++
+		//续约合同 数据
+		mapRenewedContractMoney[keyMap] += v.Money
+		mapRenewedContractNum[keyMap]++
 
-			mapExpiredContractMoney[keyMapTtoal] += v.Money
-			mapExpiredContractNum[keyMapTtoal]++
+		mapRenewedContractMoney[keyMapTtoal] += v.Money
+		mapRenewedContractNum[keyMapTtoal]++
+	}
+
+	//确认不续约、到期合同部分的数据
+	for _, v := range listEndData {
+		startDateTime := utils.StrDateToDate(v.EndDate)
+		monthNum := startDateTime.Month()
+		yearStr := strconv.Itoa(startDateTime.Year())
+		if dataType == "季度" {
+			if monthNum < 4 {
+				yearStr += "Q1"
+			} else if monthNum > 3 && monthNum < 7 {
+				yearStr += "Q2"
+			} else if monthNum > 6 && monthNum < 10 {
+				yearStr += "Q3"
+			} else if monthNum > 9 {
+				yearStr += "Q4"
+			}
+		} else if dataType == "半年度" {
+			if monthNum < 7 {
+				yearStr += "H1"
+			} else {
+				yearStr += "H2"
+			}
 		}
 
+		keyMap = fmt.Sprint(yearStr, "_", v.SellerIdLast)
+		if sellerDevelopIds[v.SellerIdLast] == true {
+			keyMapTtoal = fmt.Sprint(yearStr, "_Develop")
+		} else {
+			keyMapTtoal = fmt.Sprint(yearStr, "_Service")
+		}
+
+		//到期合同数据
+		mapExpiredContractMoney[keyMap] += v.Money
+		mapExpiredContractNum[keyMap]++
+
+		mapExpiredContractMoney[keyMapTtoal] += v.Money
+		mapExpiredContractNum[keyMapTtoal]++
+
 		if mapNoRenewedcompanyContractIds[v.CompanyContractId] { // 确认不续约合同
 			confirmedNoRenewalContractMoney[keyMap] += v.Money
 			confirmedNoRenewalContractNum[keyMap]++
@@ -213,11 +327,6 @@ func (this *StatisticRaiDataSummaryController) RaiDataSummaryList() {
 			confirmedNoRenewalContractMoney[keyMapTtoal] += v.Money
 			confirmedNoRenewalContractNum[keyMapTtoal]++
 		}
-		mapSignedClientMoney[keyMap] += v.Money
-		mapSignedClientNum[keyMap]++
-
-		mapSignedClientMoney[keyMapTtoal] += v.Money
-		mapSignedClientNum[keyMapTtoal]++
 	}
 
 	listFmsData, err := fms.GetContractRegisterListByStartDate(startDate, endDate)

+ 8 - 0
models/company/company_contract.go

@@ -484,3 +484,11 @@ func UpdateCompanyContracthide(companyContractId []string) (err error) {
 	_, err = o.Raw(sql).Exec()
 	return
 }
+
+// 更新合同类型
+func UpdateCompanyContractInheritEndDate(inheritEndDate string, inheritCompanyContracId, companyContractId int) (err error) {
+	o := orm.NewOrm()
+	sql := `UPDATE company_contract SET inherit_end_date = ? , inherit_company_contract_id = ?   WHERE company_contract_id=? `
+	_, err = o.Raw(sql, inheritEndDate, inheritCompanyContracId, companyContractId).Exec()
+	return
+}

+ 29 - 0
models/statistic_report/rai_data_summary.go

@@ -88,6 +88,7 @@ type IncrementalList struct {
 	SysRealName     string `description:"操作者名称"`
 	Operation       string `description:"操作"`
 	RaiContractType string `description:"权益合同类型:枚举值:'新签合同','续约合同','补充协议'"`
+	InheritEndDate  string `description:"所继承上一份合同的结束日期,权益自定义续约合同统计使用"`
 }
 
 // GetRaiDataSummaryList 获取增量客户报表列表数据(根据合同来展示)
@@ -117,6 +118,34 @@ func GetRaiDataSummaryList(condition string, pars []interface{}) (items []*Incre
 	return
 }
 
+// GetRaiDataSummaryList 获取增量客户报表列表数据(根据合同来展示)
+func GetRaiDataSummaryInheritList(condition string, pars []interface{}) (items []*IncrementalList, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT a.start_date,
+			   a.end_date,
+			   a.inherit_end_date,
+			   a.company_contract_id,
+			   a.money,
+			   a.rai_contract_type,
+			   a.seller_id_init,
+			   a.seller_name_init,
+			   a.share_seller_init,
+			   a.share_seller_id_init,
+			   a.seller_id_last,
+			   a.seller_name_last, 
+			   a.share_seller_last,
+			   a.share_seller_id_last
+       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.start_date desc,a.company_id desc `
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}
+
 type RaiDataSummaryPopupTypeResp struct {
 	CompanyNum      int                         `description:"企业客户数量"`
 	CompanyMultiple int                         `description:"户有多份合同的企业客户数量"`

+ 61 - 0
services/company_contract.go

@@ -588,3 +588,64 @@ func UpdateCompanyContracthideBycompanyId(companyId, productId int) {
 
 	return
 }
+
+func init_CRM_16_7() {
+	var condition string
+	var pars []interface{}
+	condition = "  AND  product_id = 2 AND status != 2  ORDER BY start_date ASC   "
+	companyContractList, e := company.GetCompanyContractList(condition, pars)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		fmt.Println(e)
+		return
+	}
+	for k, v := range companyContractList {
+		fmt.Println(k)
+		UpdateCompanyContractInheritEndDate(v.CompanyContractId)
+		time.Sleep(100 * time.Millisecond)
+	}
+	fmt.Println("init_CRM_16_7end")
+}
+
+//func init() {
+//	//UpdateCompanyContractInheritEndDate(211)
+//	init_CRM_16_7()
+//}
+
+// 判断权益合同,是否续约了上一份的合同,并修改对应续约信息
+func UpdateCompanyContractInheritEndDate(companyContractId int) {
+	var err error
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go alarm_msg.SendAlarmMsg(fmt.Sprint("判断权益合同,是否续约了上一份的合同,并修改对应续约信息失败,UpdateCompanyContractInheritEndDate ", err), 3)
+		}
+	}()
+	contractInfo, e := company.GetCompanyContractDetailByCompanyContractId(companyContractId)
+	if e != nil {
+		err = errors.New("GetCompanyContractDetailByCompanyContractId, Err: " + e.Error())
+		return
+	}
+	startDate := contractInfo.StartDate
+
+	var condition string
+	var pars []interface{}
+	condition = "  AND  product_id = 2 AND status != 2  AND company_id = ? AND end_date <= ? AND DATE_ADD( end_date, INTERVAL 1 YEAR ) >= ?  ORDER BY start_date ASC  LIMIT	 1  "
+	pars = append(pars, contractInfo.CompanyId, startDate, startDate)
+	companyContractList, e := company.GetCompanyContractList(condition, pars)
+	if e != nil {
+		err = errors.New("GetCompanyContractList, Err: " + e.Error())
+		return
+	}
+
+	if len(companyContractList) == 1 {
+		for _, v := range companyContractList {
+			e = company.UpdateCompanyContractInheritEndDate(v.EndDate, v.CompanyContractId, contractInfo.CompanyContractId)
+			if e != nil {
+				err = errors.New("UpdateCompanyContractInheritEndDate, Err: " + e.Error())
+				return
+			}
+		}
+	}
+
+	return
+}