zhangchuanxing 3 месяцев назад
Родитель
Сommit
f46b6efcba

+ 17 - 7
controllers/statistic_company_merge.go

@@ -2495,20 +2495,30 @@ func init16_1_04() {
 //	fmt.Println("end")
 //}
 
-func init16_1_06() {
+//func init() {
+//	UpdateCompanyContracthide(5593)
+//}
+
+func UpdateCompanyContracthide(companyId int) {
 	var condition string
 	var pars []interface{}
 
-	listContractMax, e := company.GetCompanyContracListInit(condition, pars)
+	if companyId > 0 {
+		condition = ` AND a.company_id = ? `
+		pars = append(pars, companyId)
+	}
+
+	listContractMax, e := company.GetCompanyContracListMaxStartDate(condition, pars)
 	if e != nil {
 		fmt.Println(e)
 		return
 	}
-	maxId := make(map[int]string)
+	maxId := make(map[int]time.Time)
 	for _, v := range listContractMax {
-		maxId[v.CompanyId] = v.MaxEndDate
+		maxId[v.CompanyId] = v.MaxStartDate
 	}
 
+	fmt.Println(maxId[5593])
 	listContract, e := company.GetCompanyContracListInit_CRM_16_1(condition, pars)
 	if e != nil {
 		fmt.Println(e)
@@ -2516,14 +2526,14 @@ func init16_1_06() {
 	}
 	var updateId []string
 	for _, v := range listContract {
-		if maxId[v.CompanyId] == v.EndDate {
+		if v.EndDate.After(maxId[v.CompanyId]) {
 			continue
 		}
 		updateId = append(updateId, strconv.Itoa(v.CompanyContractId))
 	}
 
-	err := company.UpdateCompanyContracthide(updateId)
-	fmt.Println((err))
+	//err := company.UpdateCompanyContracthide(updateId)
+	//fmt.Println((err))
 	fmt.Println((updateId))
 }
 

+ 30 - 43
models/company/company_contract.go

@@ -418,8 +418,8 @@ type CompanyContractRespInit struct {
 	CompanyProductId     int       `description:"客户产品id"`
 	ContractCode         string    `description:"合同编码"`
 	StartDate            string    `description:"合同开始时间"`
-	EndDate              string    `description:"合同结束时间"`
-	MaxEndDate           string    `description:"合同结束时间"`
+	EndDate              time.Time `description:"合同结束时间"`
+	MaxStartDate         time.Time `description:"合同结束时间"`
 	Money                float64   `description:"合同金额"`
 	PayMethod            string    `description:"支付方式"`
 	PayChannel           string    `description:"支付渠道"`
@@ -434,31 +434,24 @@ type CompanyContractRespInit struct {
 }
 
 // 通过ID获取详情
-func GetCompanyContracListInit(condition string, pars []interface{}) (items []*CompanyContractRespInit, err error) {
+func GetCompanyContracListMaxStartDate(condition string, pars []interface{}) (items []*CompanyContractRespInit, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT
-	MAX( a.end_date ) AS max_end_date,
-	COUNT(a.company_id) AS cc ,
-	a.* 
-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 -- 		AND b.company_name LIKE "%上海亘%"
-	
-	AND c.product_id = 2 -- 		AND b.company_name LIKE "%上海亘%"
-	
-	AND c.product_id = 2 
-	AND a.not_renewal_hide = 0 
-	AND a.STATUS = 1 
-	AND c.STATUS NOT IN ( "永续", "正式", "关闭" ) 
-	
-	AND a.company_contract_id  NOT IN (SELECT company_contract_id FROM company_contract_no_renewed_ascribe )
-GROUP BY
-	a.company_id
- ` + condition
+			MAX( a.start_date ) AS max_start_date,
+			COUNT(a.company_id) AS cc ,
+			a.* 
+		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 
+			
+			AND c.product_id = 2 
+			AND a.not_renewal_hide = 0 
+			AND a.STATUS = 1 
+			AND a.company_contract_id  NOT IN (SELECT company_contract_id FROM company_contract_no_renewed_ascribe )` + condition + ` GROUP BY a.company_id `
 	_, err = o.Raw(sql, pars).QueryRows(&items)
 	return
 }
@@ -467,24 +460,18 @@ GROUP BY
 func GetCompanyContracListInit_CRM_16_1(condition string, pars []interface{}) (items []*CompanyContractRespInit, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT
-	a.* 
-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 -- 		AND b.company_name LIKE "%上海亘%"
-	
-	AND c.product_id = 2 -- 		AND b.company_name LIKE "%上海亘%"
-
-	AND c.product_id = 2 
-	AND a.not_renewal_hide = 0 
-	AND a.STATUS = 1 
-	AND c.STATUS NOT IN ( "永续", "正式", "关闭" ) 
-
-	AND a.company_contract_id  NOT IN (SELECT company_contract_id FROM company_contract_no_renewed_ascribe )
- ` + condition
+			a.* 
+		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 
+			AND c.product_id = 2
+			AND a.not_renewal_hide = 0 
+			AND a.STATUS = 1 
+			AND a.company_contract_id  NOT IN (SELECT company_contract_id FROM company_contract_no_renewed_ascribe ) ` + condition
 	_, err = o.Raw(sql, pars).QueryRows(&items)
 	return
 }

+ 4 - 3
services/company_apply/company_approval.go

@@ -423,9 +423,10 @@ func Approved(approvalRecord *contract.ContractApprovalRecord, opUser *system.Ad
 				cygxService.YanXuanCompanyApproval(recordInfo.CompanyId, recordInfo.CompanyContractId) //研选审批通过的时候研选扣点更新
 				cygxService.HandleCompanyContractTypeByRaiXClass(recordInfo.CompanyContractId)         //所有x类试用转正的合同都记为 :打分派点
 				//cygxService.HandleAllocationCompanyContractByYanXuan(recordInfo.CompanyContractId)     //如果合同只有研选的时候,自动处理派点
-				cygxService.HandleCompanyContractPackageDifference(recordInfo.CompanyContractId)      // 更新与上一份合同的金额的对比 '增加套餐','减少套餐','维持套餐'
-				cygxService.HandleCompanyContractPermissionContractType(recordInfo.CompanyContractId) // 更新合同权限表中的权限名称,以及对应的行业权限类型(行业新签、行业续约)
-				services.UpdateCompanyProductSellerMove(recordInfo.CompanyId, recordInfo.ProductId)   // 权益客户创建新的有效合同之后,更新所关联的销售信息
+				cygxService.HandleCompanyContractPackageDifference(recordInfo.CompanyContractId)          // 更新与上一份合同的金额的对比 '增加套餐','减少套餐','维持套餐'
+				cygxService.HandleCompanyContractPermissionContractType(recordInfo.CompanyContractId)     // 更新合同权限表中的权限名称,以及对应的行业权限类型(行业新签、行业续约)
+				services.UpdateCompanyProductSellerMove(recordInfo.CompanyId, recordInfo.ProductId)       // 权益客户创建新的有效合同之后,更新所关联的销售信息
+				services.UpdateCompanyContracthideBycompanyId(recordInfo.CompanyId, recordInfo.ProductId) // 权益客户创建新的有效合同之后,对相关合同进行隐藏
 			}
 		}()
 	} else {

+ 63 - 0
services/company_contract.go

@@ -6,6 +6,7 @@ import (
 	"hongze/hz_crm_api/models/company"
 	"hongze/hz_crm_api/services/alarm_msg"
 	"hongze/hz_crm_api/utils"
+	"strconv"
 	"time"
 )
 
@@ -525,3 +526,65 @@ func UpdateCompanyProductSellerMove(companyId, productId int) {
 
 	return
 }
+
+//func init() {
+//	UpdateCompanyContracthideBycompanyId(5593, 2)
+//}
+
+// 权益客户创建新的有效合同之后,对相关合同进行隐藏
+func UpdateCompanyContracthideBycompanyId(companyId, productId int) {
+	if productId != utils.COMPANY_PRODUCT_RAI_ID {
+		return
+	}
+	var err error
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go alarm_msg.SendAlarmMsg("权益客户创建新的有效合同之后,对相关合同进行隐藏,UpdateCompanyContracthideBycompanyId "+fmt.Sprint("companyId:", companyId, ";err:", err), 3)
+		}
+	}()
+
+	var condition string
+	var pars []interface{}
+
+	if companyId > 0 {
+		condition = ` AND a.company_id = ? `
+		pars = append(pars, companyId)
+	}
+
+	listContractMax, e := company.GetCompanyContracListMaxStartDate(condition, pars)
+	if e != nil {
+		err = errors.New("GetCompanyContracListMaxStartDate, Err: " + e.Error())
+		return
+	}
+	//如果合同结束时间,早于最新一份合同的开始时间,这份合同就隐藏
+	maxId := make(map[int]time.Time)
+	for _, v := range listContractMax {
+		maxId[v.CompanyId] = v.MaxStartDate
+	}
+
+	listContract, e := company.GetCompanyContracListInit_CRM_16_1(condition, pars)
+	if e != nil {
+		err = errors.New("GetCompanyContracListInit_CRM_16_1, Err: " + e.Error())
+		return
+	}
+	var updateId []string
+	for _, v := range listContract {
+		if v.EndDate.After(maxId[v.CompanyId]) {
+			continue
+		}
+		updateId = append(updateId, strconv.Itoa(v.CompanyContractId))
+	}
+
+	if len(updateId) == 0 {
+		return
+	}
+	e = company.UpdateCompanyContracthide(updateId)
+	if e != nil {
+		err = errors.New("UpdateCompanyContracthide, Err: " + e.Error())
+		return
+	}
+	fmt.Println((updateId))
+
+	return
+}