Browse Source

Merge branch 'crm/crm_16.7' of http://8.136.199.33:3000/hongze/hz_crm_api into debug

zhangchuanxing 1 week ago
parent
commit
368144ddd1

+ 4 - 1
controllers/company_apply_v2.go

@@ -295,6 +295,7 @@ func (this *CompanyApplyController) ApplyServiceUpdate() {
 			br.ErrMsg = "新增合同失败,Err:" + err.Error()
 			return
 		}
+
 		//如果用印ID > 0 建立合同ID,与用印申请表的关系
 		if sealId > 0 {
 			//用印作废
@@ -305,6 +306,7 @@ func (this *CompanyApplyController) ApplyServiceUpdate() {
 				return
 			}
 		}
+		go services.UpdateCompanyContractInheritEndDate(int(newId))
 		permissionArr := strings.Split(req.PermissionIds, ",")
 		permissionMap := make(map[int]int) //权限id的map集合,用来避免重复添加权限校验
 
@@ -809,7 +811,6 @@ func (this *CompanyApplyController) ApplyTurnPositive() {
 			br.ErrMsg = "新增合同失败,Err:" + err.Error()
 			return
 		}
-
 		//如果用印ID > 0 建立合同ID,与用印申请表的关系
 		if sealId > 0 {
 			//用印作废
@@ -820,6 +821,7 @@ func (this *CompanyApplyController) ApplyTurnPositive() {
 				return
 			}
 		}
+		go services.UpdateCompanyContractInheritEndDate(int(newId))
 		permissionArr := strings.Split(req.PermissionIds, ",")
 		permissionMap := make(map[int]int) //权限id的map集合,用来避免重复添加权限校验
 		permissionItems := make([]*company.CompanyContractPermission, 0)
@@ -1331,6 +1333,7 @@ func (this *CompanyApplyController) ApplyBySystemContract() {
 			br.ErrMsg = "新增合同失败,Err:" + err.Error()
 			return
 		}
+		go services.UpdateCompanyContractInheritEndDate(int(newId))
 		upgradeMap := make(map[int]int)
 		if utils.RunMode == "release" {
 			upgradeMap = map[int]int{22: 39, 21: 38, 20: 37, 19: 36}

+ 199 - 49
controllers/statistic/rai_data_summary.go

@@ -96,6 +96,7 @@ func (this *StatisticRaiDataSummaryController) RaiDataSummaryList() {
 	var sellerDevelop []*system.AdminItem     // 开拓组销售
 	var sellerService []*system.AdminItem     // 服务组销售
 	var sellerDevelopIds = make(map[int]bool) // 开拓组销售的map
+	mapsellerId := make(map[int]bool)         // 权益销售map
 	for _, v := range sellerList {
 		if strings.Contains(v.RealName, "6") {
 			sellerService = append(sellerService, v)
@@ -103,6 +104,7 @@ func (this *StatisticRaiDataSummaryController) RaiDataSummaryList() {
 			sellerDevelop = append(sellerDevelop, v)
 			sellerDevelopIds[v.AdminId] = true
 		}
+		mapsellerId[v.AdminId] = true
 	}
 
 	//拼接起始时间查询
@@ -185,6 +187,9 @@ func (this *StatisticRaiDataSummaryController) RaiDataSummaryList() {
 	mapCompanyData := make(map[string]bool)
 	//新签部分的数据
 	for _, v := range listRaiData {
+		if !mapsellerId[v.SellerIdLast] {
+			continue
+		}
 		startDateTime := utils.StrDateToDate(v.StartDate)
 		monthNum := startDateTime.Month()
 		yearStr := strconv.Itoa(startDateTime.Year())
@@ -259,6 +264,9 @@ func (this *StatisticRaiDataSummaryController) RaiDataSummaryList() {
 	//续约部分的数据
 	mapKeyMapCompanyData := make(map[string]bool)
 	for _, v := range listInheritData {
+		if !mapsellerId[v.SellerIdLast] {
+			continue
+		}
 		startDateTime := utils.StrDateToDate(v.InheritEndDate)
 		monthNum := startDateTime.Month()
 		yearStr := strconv.Itoa(startDateTime.Year())
@@ -305,6 +313,9 @@ func (this *StatisticRaiDataSummaryController) RaiDataSummaryList() {
 	mapKeyMapCompanyEndData := make(map[string]bool)
 	mapKeyMapCompanyNoData := make(map[string]bool)
 	for _, v := range listEndData {
+		if !mapsellerId[v.SellerIdLast] {
+			continue
+		}
 		startDateTime := utils.StrDateToDate(v.EndDate)
 		monthNum := startDateTime.Month()
 		yearStr := strconv.Itoa(startDateTime.Year())
@@ -368,6 +379,9 @@ func (this *StatisticRaiDataSummaryController) RaiDataSummaryList() {
 	}
 
 	for _, v := range listFmsData {
+		if !mapsellerId[v.RaiSellerId] {
+			continue
+		}
 		startDateTime := v.StartDate
 		monthNum := startDateTime.Month()
 		yearStr := strconv.Itoa(startDateTime.Year())
@@ -404,6 +418,8 @@ func (this *StatisticRaiDataSummaryController) RaiDataSummaryList() {
 		mapPaymentAmountMoney[keyMapTtoal] += v.PaymentAmount
 
 		if v.ContractType == 1 {
+			mapNewCustomerInvoicingMoney[keyMap] += v.InvoicedAmount
+			mapNewCustomerPaymentsReceivedMoney[keyMap] += v.PaymentAmount
 			mapNewCustomerInvoicingMoney[keyMapTtoal] += v.InvoicedAmount
 			mapNewCustomerPaymentsReceivedMoney[keyMapTtoal] += v.PaymentAmount
 		}
@@ -926,7 +942,7 @@ func (this *StatisticRaiDataSummaryController) RaiDataSummaryDetail() {
 			pars = append(pars, sellerId)
 		}
 
-		condition += ` AND  a.status = 1  AND a.inherit_end_date >= ?  AND a.inherit_end_date <= ?  AND  inherit_company_contract_id > 0  `
+		condition += ` AND  a.status = 1  AND a.inherit_end_date >= ?  AND a.inherit_end_date <= ?  AND  a.inherit_company_contract_id > 0  `
 		pars = append(pars, startDate, endDate)
 
 		total, err := company.GetIncrementalNewCompanyProductMergeCount(condition, pars)
@@ -1121,12 +1137,17 @@ func (this *StatisticRaiDataSummaryController) RaiDataSummaryDetail() {
 
 	case "确认不续约率":
 		noRenewedcompanyContractIdsMap := services.GetCompanyContractNoRenewedAscribeListMap()
+		var conditionEnd string
+		var parsEnd []interface{}
 		if sellerId > 0 {
 			condition += ` AND a.seller_id_last = ? `
 			pars = append(pars, sellerId)
+
+			conditionEnd += ` AND a.seller_id_last = ? `
+			parsEnd = append(parsEnd, sellerId)
 		}
 
-		condition += ` AND  a.product_id = 2  AND  a.status = 1  AND  a.start_date >= ?  AND  a.start_date <= ? AND a.end_date <= ?  `
+		condition += ` AND  a.product_id = 2  AND  a.status = 1  AND  a.end_date >= ?  AND  a.end_date <= ? AND a.end_date <= ?  `
 		pars = append(pars, startDate, endDate, time.Now().Format(utils.FormatDate))
 		listRaiData, err := statistic_report.GetRaiDataSummaryList(condition, pars)
 		if err != nil {
@@ -1134,6 +1155,17 @@ func (this *StatisticRaiDataSummaryController) RaiDataSummaryDetail() {
 			br.ErrMsg = "获取数据信息失败,Err:" + err.Error()
 			return
 		}
+
+		conditionEnd += `  AND  a.product_id = 2  AND  a.status = 1  AND a.end_date >= ?  AND a.end_date <= ?   AND a.end_date < ? `
+		parsEnd = append(parsEnd, startDate, endDate, time.Now().Format(utils.FormatDate))
+
+		listEndData, err := statistic_report.GetRaiDataSummaryList(conditionEnd, parsEnd)
+		if err != nil {
+			br.Msg = "获取数据信息失败"
+			br.ErrMsg = "获取数据信息失败,Err:" + err.Error()
+			return
+		}
+
 		var norenewedContractMoney float64   // 不续约金额
 		var norenewedContractCompany float64 // 不续约客户数
 		mapnorenewedContractCompany := make(map[int]bool)
@@ -1149,14 +1181,14 @@ func (this *StatisticRaiDataSummaryController) RaiDataSummaryDetail() {
 					norenewedContractCompany++
 					mapnorenewedContractCompany[v.CompanyId] = true
 				}
-				startDateTime := utils.StrDateToDate(v.StartDate)
-				if startDateTime.Before(time.Now().AddDate(0, 0, -1)) { //到期合同数据
-					expiredContractMoney += v.Money
-					if !mapexpiredContractCompany[v.CompanyId] {
-						expiredContractCompany++
-						mapexpiredContractCompany[v.CompanyId] = true
-					}
-				}
+			}
+		}
+
+		for _, v := range listEndData {
+			expiredContractMoney += v.Money
+			if !mapexpiredContractCompany[v.CompanyId] {
+				expiredContractCompany++
+				mapexpiredContractCompany[v.CompanyId] = true
 			}
 		}
 
@@ -1183,9 +1215,14 @@ func (this *StatisticRaiDataSummaryController) RaiDataSummaryDetail() {
 		listResp = append(listResp, item2)
 
 	case "签约客户数量":
+		var conditionInherit string
+		var parsInherit []interface{}
 		if sellerId > 0 {
 			condition += ` AND a.seller_id_last = ? `
 			pars = append(pars, sellerId)
+
+			conditionInherit += ` AND a.seller_id_last = ? `
+			parsInherit = append(parsInherit, sellerId)
 		}
 		condition += " AND  a.product_id = 2  AND  a.status = 1  AND  a.start_date >= ?  AND  a.start_date <= ? "
 		pars = append(pars, startDate, endDate)
@@ -1196,6 +1233,16 @@ func (this *StatisticRaiDataSummaryController) RaiDataSummaryDetail() {
 			return
 		}
 
+		//续约部分的数据
+		conditionInherit += " AND  a.product_id = 2  AND  a.status = 1  AND  a.inherit_end_date >= ?  AND  a.inherit_end_date <= ? AND  a.inherit_company_contract_id > 0 "
+		parsInherit = append(parsInherit, startDate, endDate)
+		listInheritData, err := statistic_report.GetRaiDataSummaryInheritList(conditionInherit, parsInherit)
+		if err != nil {
+			br.Msg = "获取数据信息失败"
+			br.ErrMsg = "获取数据信息失败,Err:" + err.Error()
+			return
+		}
+
 		var renewedContractCompany int // 续约客户数
 		var renewedContract int        // 续约合同数
 		maprenewedContractCompany := make(map[int]bool)
@@ -1210,13 +1257,23 @@ func (this *StatisticRaiDataSummaryController) RaiDataSummaryDetail() {
 					newContractCompany++
 					mapenewContractCompany[v.CompanyId] = true
 				}
-			} else if v.RaiContractType == "续约合同" {
-				renewedContract++
-				if !maprenewedContractCompany[v.CompanyId] {
-					renewedContractCompany++
-					maprenewedContractCompany[v.CompanyId] = true
-				}
 			}
+			//else if v.RaiContractType == "续约合同" {
+			//	renewedContract++
+			//	if !maprenewedContractCompany[v.CompanyId] {
+			//		renewedContractCompany++
+			//		maprenewedContractCompany[v.CompanyId] = true
+			//	}
+			//}
+		}
+
+		for _, v := range listInheritData {
+			renewedContract++
+			if !maprenewedContractCompany[v.CompanyId] {
+				renewedContractCompany++
+				maprenewedContractCompany[v.CompanyId] = true
+			}
+
 		}
 
 		item := new(statistic_report.RaiDataSummaryDetailResp)
@@ -1242,10 +1299,14 @@ func (this *StatisticRaiDataSummaryController) RaiDataSummaryDetail() {
 
 		var ontractMoney float64 // 签约总金额
 		var contractNum int      // 签约客户数
+		mapCompany := make(map[int]bool)
 
 		for _, v := range listRaiData {
 			ontractMoney += v.Money
-			contractNum++
+			if !mapCompany[v.CompanyId] {
+				contractNum++
+				mapCompany[v.CompanyId] = true
+			}
 		}
 		item := new(statistic_report.RaiDataSummaryDetailResp)
 		item.ContractMoney = fmt.Sprint(utils.SubFloatToString(ontractMoney, 2))
@@ -1265,15 +1326,37 @@ func (this *StatisticRaiDataSummaryController) RaiDataSummaryDetail() {
 			br.ErrMsg = "获取数据信息失败,Err:" + err.Error()
 			return
 		}
+		if len(listFmsData) > 0 {
+			var contractRegisterId []int
+			for _, v := range listFmsData {
+				contractRegisterId = append(contractRegisterId, v.ContractRegisterId)
+			}
+			lenArr := len(contractRegisterId)
+			var conditionFms string
+			var parsFms []interface{}
+			conditionFms += ` AND  contract_register_id IN  (` + utils.GetOrmInReplace(lenArr) + `)  GROUP BY contract_register_id  `
+			parsFms = append(parsFms, contractRegisterId)
+			listInvoiceData, err := fms.GetContractInvoiceList(conditionFms, parsFms, 0, lenArr)
+			if err != nil {
+				br.Msg = "获取数据信息失败"
+				br.ErrMsg = "获取数据信息失败,Err:" + err.Error()
+				return
+			}
 
-		for _, v := range listFmsData {
-			item := new(statistic_report.RaiDataSummaryDetailResp)
-			item.CompanyName = v.CompanyName
-			item.SellerName = v.RaiSellerName
-			item.ContractCode = v.ContractCode
-			item.InvoicedAmount = v.InvoicedAmount
-			item.CreateTime = v.CreateTime.Format(utils.FormatDate)
-			listResp = append(listResp, item)
+			mapInvoiceTime := make(map[int]string)
+			for _, v := range listInvoiceData {
+				mapInvoiceTime[v.ContractRegisterId] = v.InvoiceTime.Format(utils.FormatDate)
+			}
+
+			for _, v := range listFmsData {
+				item := new(statistic_report.RaiDataSummaryDetailResp)
+				item.CompanyName = v.CompanyName
+				item.SellerName = v.RaiSellerName
+				item.ContractCode = v.ContractCode
+				item.InvoicedAmount = v.InvoicedAmount
+				item.CreateTime = mapInvoiceTime[v.ContractRegisterId]
+				listResp = append(listResp, item)
+			}
 		}
 
 	case "到款金额":
@@ -1290,14 +1373,37 @@ func (this *StatisticRaiDataSummaryController) RaiDataSummaryDetail() {
 			return
 		}
 
-		for _, v := range listFmsData {
-			item := new(statistic_report.RaiDataSummaryDetailResp)
-			item.CompanyName = v.CompanyName
-			item.SellerName = v.RaiSellerName
-			item.ContractCode = v.ContractCode
-			item.PaymentAmount = v.PaymentAmount
-			item.CreateTime = v.CreateTime.Format(utils.FormatDate)
-			listResp = append(listResp, item)
+		if len(listFmsData) > 0 {
+			var contractRegisterId []int
+			for _, v := range listFmsData {
+				contractRegisterId = append(contractRegisterId, v.ContractRegisterId)
+			}
+			lenArr := len(contractRegisterId)
+			var conditionFms string
+			var parsFms []interface{}
+			conditionFms += ` AND  contract_register_id IN  (` + utils.GetOrmInReplace(lenArr) + `)  GROUP BY contract_register_id  `
+			parsFms = append(parsFms, contractRegisterId)
+			listInvoiceData, err := fms.GetContractInvoiceList(conditionFms, parsFms, 0, lenArr)
+			if err != nil {
+				br.Msg = "获取数据信息失败"
+				br.ErrMsg = "获取数据信息失败,Err:" + err.Error()
+				return
+			}
+
+			mapInvoiceTime := make(map[int]string)
+			for _, v := range listInvoiceData {
+				mapInvoiceTime[v.ContractRegisterId] = v.InvoiceTime.Format(utils.FormatDate)
+			}
+
+			for _, v := range listFmsData {
+				item := new(statistic_report.RaiDataSummaryDetailResp)
+				item.CompanyName = v.CompanyName
+				item.SellerName = v.RaiSellerName
+				item.ContractCode = v.ContractCode
+				item.PaymentAmount = v.PaymentAmount
+				item.CreateTime = v.CreateTime.Format(utils.FormatDate)
+				listResp = append(listResp, item)
+			}
 		}
 
 	case "未到款比例":
@@ -1336,15 +1442,37 @@ func (this *StatisticRaiDataSummaryController) RaiDataSummaryDetail() {
 			br.ErrMsg = "获取数据信息失败,Err:" + err.Error()
 			return
 		}
+		if len(listFmsData) > 0 {
+			var contractRegisterId []int
+			for _, v := range listFmsData {
+				contractRegisterId = append(contractRegisterId, v.ContractRegisterId)
+			}
+			lenArr := len(contractRegisterId)
+			var conditionFms string
+			var parsFms []interface{}
+			conditionFms += ` AND  contract_register_id IN  (` + utils.GetOrmInReplace(lenArr) + `)  GROUP BY contract_register_id  `
+			parsFms = append(parsFms, contractRegisterId)
+			listInvoiceData, err := fms.GetContractInvoiceList(conditionFms, parsFms, 0, lenArr)
+			if err != nil {
+				br.Msg = "获取数据信息失败"
+				br.ErrMsg = "获取数据信息失败,Err:" + err.Error()
+				return
+			}
 
-		for _, v := range listFmsData {
-			item := new(statistic_report.RaiDataSummaryDetailResp)
-			item.CompanyName = v.CompanyName
-			item.SellerName = v.RaiSellerName
-			item.ContractCode = v.ContractCode
-			item.PaymentAmount = v.PaymentAmount
-			item.CreateTime = v.CreateTime.Format(utils.FormatDate)
-			listResp = append(listResp, item)
+			mapInvoiceTime := make(map[int]string)
+			for _, v := range listInvoiceData {
+				mapInvoiceTime[v.ContractRegisterId] = v.InvoiceTime.Format(utils.FormatDate)
+			}
+
+			for _, v := range listFmsData {
+				item := new(statistic_report.RaiDataSummaryDetailResp)
+				item.CompanyName = v.CompanyName
+				item.SellerName = v.RaiSellerName
+				item.ContractCode = v.ContractCode
+				item.InvoicedAmount = v.InvoicedAmount
+				item.CreateTime = mapInvoiceTime[v.ContractRegisterId]
+				listResp = append(listResp, item)
+			}
 		}
 
 	case "新客到款":
@@ -1360,15 +1488,37 @@ func (this *StatisticRaiDataSummaryController) RaiDataSummaryDetail() {
 			br.ErrMsg = "获取数据信息失败,Err:" + err.Error()
 			return
 		}
+		if len(listFmsData) > 0 {
+			var contractRegisterId []int
+			for _, v := range listFmsData {
+				contractRegisterId = append(contractRegisterId, v.ContractRegisterId)
+			}
+			lenArr := len(contractRegisterId)
+			var conditionFms string
+			var parsFms []interface{}
+			conditionFms += ` AND  contract_register_id IN  (` + utils.GetOrmInReplace(lenArr) + `)  GROUP BY contract_register_id  `
+			parsFms = append(parsFms, contractRegisterId)
+			listInvoiceData, err := fms.GetContractInvoiceList(conditionFms, parsFms, 0, lenArr)
+			if err != nil {
+				br.Msg = "获取数据信息失败"
+				br.ErrMsg = "获取数据信息失败,Err:" + err.Error()
+				return
+			}
 
-		for _, v := range listFmsData {
-			item := new(statistic_report.RaiDataSummaryDetailResp)
-			item.CompanyName = v.CompanyName
-			item.SellerName = v.RaiSellerName
-			item.ContractCode = v.ContractCode
-			item.PaymentAmount = v.PaymentAmount
-			item.CreateTime = v.CreateTime.Format(utils.FormatDate)
-			listResp = append(listResp, item)
+			mapInvoiceTime := make(map[int]string)
+			for _, v := range listInvoiceData {
+				mapInvoiceTime[v.ContractRegisterId] = v.InvoiceTime.Format(utils.FormatDate)
+			}
+
+			for _, v := range listFmsData {
+				item := new(statistic_report.RaiDataSummaryDetailResp)
+				item.CompanyName = v.CompanyName
+				item.SellerName = v.RaiSellerName
+				item.ContractCode = v.ContractCode
+				item.PaymentAmount = v.PaymentAmount
+				item.CreateTime = mapInvoiceTime[v.ContractRegisterId]
+				listResp = append(listResp, item)
+			}
 		}
 
 	}

+ 1 - 0
models/fms/contract_invoice.go

@@ -16,6 +16,7 @@ type ContractInvoice struct {
 	CurrencyUnit       string    `gorm:"column:currency_unit" json:"currency_unit" description:"货币国际代码"`
 	InvoiceType        int       `gorm:"column:invoice_type" json:"invoice_type" description:"类型: 1-开票登记; 2-到款登记"`
 	InvoiceDate        time.Time `gorm:"column:invoice_time" json:"invoice_time" description:"开票日期/到款月"`
+	InvoiceTime        time.Time `description:"开票日期/到款月"`
 	SellerId           int       `gorm:"column:seller_id" json:"seller_id" description:"销售ID"`
 	SellerName         string    `gorm:"column:seller_name" json:"seller_name" description:"销售名称"`
 	SellerGroupId      int       `gorm:"column:seller_group_id" json:"seller_group_id" description:"销售分组ID"`

+ 16 - 1
models/fms/invoice_payment_summary.go

@@ -181,7 +181,6 @@ func GetContractRegisterList(condition string, pars []interface{}, startSize, pa
 	} else {
 		_, err = o.Raw(sql, pars).QueryRows(&items)
 	}
-
 	return
 }
 
@@ -197,3 +196,19 @@ func GetContractRegisterAmountList(condition string, pars []interface{}) (items
 	_, err = o.Raw(sql, pars).QueryRows(&items)
 	return
 }
+
+// 列表
+func GetContractInvoiceList(condition string, pars []interface{}, startSize, pageSize int) (items []*ContractInvoice, err error) {
+	o := orm.NewOrmUsingDB("fms")
+	sql := `SELECT * FROM contract_invoice  as a  WHERE 1= 1 `
+	if condition != "" {
+		sql += condition
+	}
+	if startSize+pageSize > 0 {
+		sql += ` LIMIT ?,?  `
+		_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	} else {
+		_, err = o.Raw(sql, pars).QueryRows(&items)
+	}
+	return
+}