zwxi 11 месяцев назад
Родитель
Сommit
e0fa7bc6b6

+ 9 - 2
models/company/company.go

@@ -212,7 +212,8 @@ type CompanyItem struct {
 	CloseReason         string               `description:"关闭原因"`
 	CloseTime           string               `description:"关闭时间"`
 	Nation              string               `description:"所属国家"`
-	LatestServiceRecord time.Time               `description:"最近沟通时间"`
+	LatestServiceRecord time.Time            `description:"最近沟通时间"`
+	FirstDate           time.Time            `description:"首次服务时间"`
 }
 
 type CompanyListItem struct {
@@ -379,7 +380,8 @@ as sort_todo_end_time,
 			SUM(b.try_out_day_total) as all_try_out_day_total,
 			IF(LEFT(GROUP_CONCAT(DISTINCT b.last_view_time ORDER BY b.product_id), 19) >= "` + t + `", 1, 0) AS week_view_active,
 			a.nation,
-			c.latest_service_record 
+			c.latest_service_record,
+			d.first_date 
 			FROM company AS a
 			INNER JOIN company_product AS b ON a.company_id=b.company_id
 			LEFT JOIN (
@@ -387,6 +389,11 @@ as sort_todo_end_time,
     FROM company_service_record
     GROUP BY company_id
 ) AS c ON a.company_id = c.company_id
+			LEFT JOIN (
+    SELECT company_id,MIN(start_date) AS first_date
+    FROM company_contract WHERE status=1 
+    GROUP BY company_id
+) AS d ON a.company_id = d.company_id 
 			WHERE a.enabled=1  `
 	if condition != "" {
 		sql += condition

+ 1 - 1
models/statistic_report/report.go

@@ -65,7 +65,7 @@ type IncrementalCompanyListReq struct {
 	SortParam    string `description:"排序字段参数,用来排序的字段, 枚举值:'viewTotal':总阅读次数 、 
 'viewTime':阅读时间 、 'roadShowTotal':累计路演次数 、'expireDay':到期时间 、 'createTime':创建时间 、
 'formalTime': 转正时间 、 'freezeTime':冻结时间 、'lossTime':流失时间 、
-'deadline':距离未完成的任务的截止日期的天数、SellerName:所属销售、ShareSellerName:分配销售、Status:客户状态"`
+'deadline':距离未完成的任务的截止日期的天数、sellerName:所属销售、shareSellerName:分配销售、status:客户状态"`
 	SortType     string `description:"如何排序,是正序还是倒序,枚举值:asc 正序,desc 倒叙 "`
 	CompanyIds   string `description:"标签,多个标签用、隔开;长度255"`
 }

+ 19 - 0
services/statistic_report/company.go

@@ -4,6 +4,7 @@ import (
 	"errors"
 	"fmt"
 	"github.com/rdlucklib/rdluck_tools/paging"
+	"github.com/shopspring/decimal"
 	"hongze/hz_crm_api/models/company"
 	statisticModels "hongze/hz_crm_api/models/statistic_report"
 	"hongze/hz_crm_api/models/system"
@@ -106,6 +107,12 @@ func CompanyList(sysUser *system.Admin, req statisticModels.IncrementalCompanyLi
 			} else {
 				sortStr = " ORDER BY sort_todo_end_time asc, b.view_total desc, a.created_time desc"
 			}
+		} else if sortParam == "sellerName" {
+			sortStr = " ORDER BY b.seller_name "
+		} else if sortParam == "shareSellerName" {
+			sortStr = " ORDER BY b.share_seller_name "
+		} else if sortParam == "status" {
+			sortStr = " ORDER BY b.status "
 		} else {
 			errMsg = "排序字段传入数据异常:" + sortParam
 			err = errors.New("获取失败")
@@ -500,6 +507,17 @@ func CompanyList(sysUser *system.Admin, req statisticModels.IncrementalCompanyLi
 				}
 			}
 
+			// 计算合同开始日期和结束日期之间的小时差
+			duration := time.Since(v.FirstDate).Hours()
+			hoursDiff := decimal.NewFromFloat(duration)
+
+			// 计算总小时数
+			const hoursPerYear = 24 * 365
+			totalHours := decimal.NewFromInt(hoursPerYear)
+
+			// 计算相差的年数,保留一位小数
+			numYearDecimal := hoursDiff.Div(totalHours).Round(1)
+
 			companyList := &CompanyListItem{
 				CompanyId:        v.CompanyId,
 				CompanyName:      v.CompanyName,
@@ -558,6 +576,7 @@ func CompanyList(sysUser *system.Admin, req statisticModels.IncrementalCompanyLi
 				ShareSellerId:   v.ShareSellerId,
 				ShareSeller:     v.ShareSeller,
 				LatestServiceRecord: v.LatestServiceRecord.Format(utils.FormatDate2),
+				ServiceYears: numYearDecimal.String(),
 			}
 			if strings.Contains(companyList.ApproveStatus, "已审批") {
 				companyList.ApproveStatus = ""