Browse Source

no message

xingzai 9 months ago
parent
commit
2b78cc24ef

+ 8 - 0
controllers/cygx/enter_score.go

@@ -370,6 +370,11 @@ func (this *EnterScoreController) EnterScoreUpdate() {
 
 	condition += " AND  company_id =? AND end_date BETWEEN ? AND ?  "
 	pars = append(pars, companyId, startDate, endDate)
+	if enterScoreId > 0 {
+		condition += " AND  enter_score_id != ?  "
+		pars = append(pars, enterScoreId)
+	}
+
 	total, err := cygx.GetCygxEnterScoreCount(condition, pars)
 	if err != nil {
 		br.Msg = "获取失败"
@@ -378,6 +383,7 @@ func (this *EnterScoreController) EnterScoreUpdate() {
 	}
 
 	if total > 0 {
+
 		listEnterScore, err := cygx.GetCygxEnterScoreList(condition, pars, 0, 1)
 		if err != nil {
 			br.Msg = "获取失败"
@@ -525,6 +531,8 @@ func (this *EnterScoreController) EnterScoreUpdate() {
 		br.ErrMsg = "操作失败Err:" + err.Error()
 		return
 	}
+
+	go cygxService.UpdateCygxallocationCompanyContractByEnterScore(itemsPermission, itemsResearcher, startDate, endDate, companyId, sysUser) //权益永续客户录分自动派点
 	br.Ret = 200
 	br.Success = true
 	br.IsAddLog = true

+ 92 - 0
models/cygx/allocation_company_contract.go

@@ -2,6 +2,7 @@ package cygx
 
 import (
 	"github.com/beego/beego/v2/client/orm"
+	"hongze/hz_crm_api/utils"
 	"time"
 )
 
@@ -152,6 +153,97 @@ func AddAndUpdateCygxAllocationCompanyContract(items []*CygxAllocationCompanyCon
 	return
 }
 
+// 更新派点信息
+func AddAndUpdateCygxAllocationCompanyContractRai(items []*CygxAllocationCompanyContract, itemsPermission []*CygxAllocationCompanyContractPermission, companyContractId []int) (err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	to, err := o.Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err != nil {
+			_ = to.Rollback()
+		} else {
+			_ = to.Commit()
+		}
+	}()
+
+	//组合研究员派点日志结构体
+	var itemsLog []*CygxAllocationCompanyContractLog
+	for _, v := range items {
+		item := new(CygxAllocationCompanyContractLog)
+		item.CompanyContractId = v.CompanyContractId
+		item.AdminId = v.AdminId
+		item.CompanyContractId = v.CompanyContractId
+		item.AdminName = v.AdminName
+		item.RealName = v.RealName
+		item.ChartPermissionName = v.ChartPermissionName
+		item.Proportion = v.Proportion
+		item.Money = v.Money
+		item.CreateTime = time.Now()
+		item.ModifyTime = time.Now()
+		itemsLog = append(itemsLog, item)
+	}
+
+	//组合行业派点日志结构体
+	var itemsPermissionLog []*CygxAllocationCompanyContractPermissionLog
+	for _, v := range itemsPermission {
+		item := new(CygxAllocationCompanyContractPermissionLog)
+		item.CompanyContractId = v.CompanyContractId
+		item.AdminId = v.AdminId
+		item.CompanyContractId = v.CompanyContractId
+		item.AdminName = v.AdminName
+		item.ChartPermissionName = v.ChartPermissionName
+		item.Proportion = v.Proportion
+		item.Money = v.Money
+		item.MoneyAvg = v.MoneyAvg
+		item.CreateTime = time.Now()
+		item.ModifyTime = time.Now()
+		itemsPermissionLog = append(itemsPermissionLog, item)
+	}
+	lenIds := len(companyContractId)
+	//删除原有的研究员派点信息
+	sql := `DELETE FROM cygx_allocation_company_contract WHERE company_contract_id IN (` + utils.GetOrmInReplace(lenIds) + `)`
+	_, err = to.Raw(sql, companyContractId).Exec()
+	if err != nil {
+		return
+	}
+	//删除原有的行业派点信息
+	sql = `	DELETE FROM cygx_allocation_company_contract_permission WHERE company_contract_id IN (` + utils.GetOrmInReplace(lenIds) + `)`
+	_, err = to.Raw(sql, companyContractId).Exec()
+	if err != nil {
+		return
+	}
+
+	//批量添加研究员派点信息
+	_, err = to.InsertMulti(len(items), items)
+	if err != nil {
+		return
+	}
+
+	_, err = to.InsertMulti(len(itemsLog), itemsLog)
+	if err != nil {
+		return
+	}
+
+	//批量添加行业派点信息
+	_, err = to.InsertMulti(len(itemsPermission), itemsPermission)
+	if err != nil {
+		return
+	}
+
+	_, err = to.InsertMulti(len(itemsPermissionLog), itemsPermissionLog)
+	if err != nil {
+		return
+	}
+
+	ow := orm.NewOrm()
+	sqlW := `UPDATE company_contract SET is_allocation=1   WHERE company_contract_id IN  (` + utils.GetOrmInReplace(lenIds) + `)`
+	_, err = ow.Raw(sqlW, companyContractId).Exec()
+
+	return
+}
+
 type UpdateAllocationCompanyContractReq struct {
 	CompanyContractId int `description:"合同ID"`
 	List              []*AllocationPermissionListResp

+ 80 - 0
services/cygx/contract_allocation.go

@@ -6,6 +6,7 @@ import (
 	"hongze/hz_crm_api/models"
 	"hongze/hz_crm_api/models/company"
 	"hongze/hz_crm_api/models/cygx"
+	"hongze/hz_crm_api/models/system"
 	"hongze/hz_crm_api/services/alarm_msg"
 	"hongze/hz_crm_api/utils"
 	"strconv"
@@ -834,3 +835,82 @@ func UpdateInitAvg(companyContractId int) {
 	//err = cygx.AddAndUpdateCygxAllocationCompanyContractInit(items, itemsPermission, companyContractId)
 	//fmt.Println(err)
 }
+
+// 权益的合同录分之后自动派点
+func UpdateCygxallocationCompanyContractByEnterScore(itemsPermissionEnterScore []*cygx.CygxEnterScorePermission, itemsResearcher []*cygx.CygxEnterScoreResearcher, startDate, endDate string, companyId int, sysUser *system.Admin) {
+	var err error
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go alarm_msg.SendAlarmMsg("权益的合同录分之后自动派点失败 UpdateCygxallocationCompanyContractByEnterScore ErrMsg:"+err.Error(), 2)
+
+		}
+	}()
+	var condition string
+	var pars []interface{}
+	condition = " AND status = 1  AND  product_id = 2  AND  company_id  = ?  AND  start_date <= ? AND   end_date <= ? "
+	pars = append(pars, companyId, startDate, endDate)
+	companyContractList, e := company.GetCompanyContractList(condition, pars)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("GetCompanyContractList, Err: " + e.Error())
+		return
+	}
+	if len(companyContractList) == 0 {
+		err = nil
+		return
+	}
+	var companyContractIds []int
+	//var companyContractIdMoney []float64 // 合同对应的金额
+	for _, v := range companyContractList {
+		companyContractIds = append(companyContractIds, v.CompanyContractId)
+	}
+
+	var items []*cygx.CygxAllocationCompanyContract
+	var itemsPermission []*cygx.CygxAllocationCompanyContractPermission
+
+	var totalProportionPermission float64 //计算总占比
+	for _, v := range itemsPermissionEnterScore {
+		totalProportionPermission += v.Proportion
+	}
+
+	//var totalResearcher float64 //计算研究员的总占比
+	//for _, v := range itemsResearcher {
+	//	totalResearcher += v.Proportion
+	//}
+
+	for _, vContract := range companyContractList {
+		for _, v := range itemsPermissionEnterScore {
+			itemPermission := new(cygx.CygxAllocationCompanyContractPermission)
+			itemPermission.CompanyContractId = vContract.CompanyContractId
+			itemPermission.AdminId = sysUser.AdminId
+			itemPermission.AdminName = sysUser.RealName
+			itemPermission.Proportion = v.Proportion / totalProportionPermission * 100 // 占比转换
+			itemPermission.Money = v.Proportion * vContract.Money
+			itemPermission.MoneyAvg = vContract.Money / 6 // 目前6个行业
+			itemPermission.ChartPermissionName = v.ChartPermissionName
+			itemPermission.CreateTime = time.Now()
+			itemPermission.ModifyTime = time.Now()
+			itemsPermission = append(itemsPermission, itemPermission)
+		}
+		for _, v := range itemsResearcher {
+			item := new(cygx.CygxAllocationCompanyContract)
+			item.CompanyContractId = vContract.CompanyContractId
+			item.AdminId = sysUser.AdminId
+			item.AdminName = sysUser.RealName
+			item.Proportion = v.Proportion / totalProportionPermission * 100 // 占比转换
+			item.Money = v.Proportion * vContract.Money
+			item.RealName = v.RealName
+			item.ChartPermissionName = v.ChartPermissionName
+			item.CreateTime = time.Now()
+			item.ModifyTime = time.Now()
+			items = append(items, item)
+		}
+	}
+	e = cygx.AddAndUpdateCygxAllocationCompanyContractRai(items, itemsPermission, companyContractIds)
+	if e != nil {
+		err = errors.New("AddAndUpdateCygxAllocationCompanyContractRai, Err: " + e.Error())
+		return
+	}
+	return
+
+}