xingzai 1 жил өмнө
parent
commit
31cc1e5c2a

+ 140 - 1
controllers/company_renewal.go

@@ -349,7 +349,146 @@ func (this *CompanyRenewalController) CompanyNoRenewedAscribeAddDetail() {
 		return
 	}
 	resp := new(company.CompanyNoRenewedAscribeDetailResp)
-	detail, err := company.GetCygxProductInteriorDetail(companyId, productId)
+	detail, err := company.GetCompanyNoRenewedAscribeDetail(companyId, productId)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+	resp.Detail = detail
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}
+
+// @Title 合同通过归因添加确认不续约
+// @Description 合同通过归因添加确认不续约接口
+// @Param	request	body company.CompanyNoRenewedNoteReq true "type json string"
+// @Success 200 {object} "保存成功"
+// @router /company_contract_no_renewed_ascribe/add [post]
+func (this *CompanyRenewalController) CompanyContractNoRenewedAscribeAdd() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+
+	//内容仅权益管理员账号可以修改
+	if sysUser.RoleTypeCode != utils.ROLE_TYPE_CODE_ADMIN && sysUser.RoleTypeCode != utils.ROLE_TYPE_CODE_RAI_ADMIN {
+		br.Msg = "仅管理员可修改!"
+		return
+	}
+	var req company.CompanyContractNoRenewedAscribeReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	content := req.Content
+	companyAscribeId := req.CompanyAscribeId
+	companyContractId := req.CompanyContractId
+
+	if content == "" {
+		br.Msg = "内容不能为空!"
+		return
+	}
+
+	contractInfo, err := company.GetCompanyContractDetailByCompanyContractId(companyContractId)
+	if err != nil {
+		br.Msg = "获取合同失败"
+		br.ErrMsg = "获取合同失败,Err:" + err.Error()
+		return
+	}
+	companyId := contractInfo.CompanyId //公司ID
+	productId := contractInfo.ProductId //权益还是FICC
+
+	detail, err := company.GetCompanyAscribeDetail(companyAscribeId)
+	if err != nil {
+		br.Msg = "新建失败"
+		br.ErrMsg = "新建失败,GetCompanyAscribeDetail Err:" + err.Error()
+		return
+	}
+	var condition string
+	var pars []interface{}
+	condition += ` AND  company_id  = ?  AND product_id = ? AND company_contract_id = ?  `
+	pars = append(pars, companyId, productId, companyContractId)
+
+	total, err := company.GetCompanyContractNoRenewedAscribeCount(condition, pars)
+	if err != nil {
+		br.Msg = "新建失败"
+		br.ErrMsg = "新建失败,GetCompanyContractNoRenewedAscribeCount Err:" + err.Error()
+		return
+	}
+	item := new(company.CompanyContractNoRenewedAscribe)
+	item.CompanyAscribeId = companyAscribeId
+	item.AscribeContent = detail.AscribeContent
+	item.Content = content
+	item.ProductId = productId
+	item.CompanyId = companyId
+	item.CompanyContractId = companyContractId
+	item.AdminId = sysUser.AdminId
+	item.CreateTime = time.Now()
+	item.ModifyTime = time.Now()
+
+	itemLog := new(company.CompanyContractNoRenewedAscribeLog)
+	itemLog.CompanyAscribeId = companyAscribeId
+	itemLog.AscribeContent = detail.AscribeContent
+	itemLog.Content = content
+	itemLog.ProductId = productId
+	itemLog.CompanyId = companyId
+	itemLog.CompanyContractId = companyContractId
+	itemLog.AdminId = sysUser.AdminId
+	itemLog.CreateTime = time.Now()
+	itemLog.ModifyTime = time.Now()
+	if total == 0 {
+		err = company.AddCompanyContractNoRenewedAscribe(item, itemLog)
+	} else {
+		err = company.UpdateCompanyContractNoRenewedAscribe(item, itemLog)
+	}
+	if err != nil {
+		br.Msg = "新建失败"
+		br.ErrMsg = "新建失败,Err:" + err.Error()
+		return
+	}
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "新建成功"
+}
+
+// @Title 合同确认归因不续约详情接口
+// @Description 合同确认归因不续约详情接口
+// @Param   CompanyContractId   query   int  true       "合同ID"
+// @Success 200 {object} company.CompanyAscribeListResp
+// @router /company_contract_no_renewed_ascribe/detail [get]
+func (this *CompanyRenewalController) CompanyContractNoRenewedAscribeAddDetail() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		return
+	}
+	companyContractId, _ := this.GetInt("CompanyContractId")
+	if companyContractId < 1 {
+		br.Msg = "合同ID错误!"
+		return
+	}
+
+	resp := new(company.CompanyContractNoRenewedAscribeDetailResp)
+	detail, err := company.GetCompanyContractNoRenewedAscribeDetail(companyContractId)
 	if err != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取失败,Err:" + err.Error()

+ 20 - 66
controllers/statistic_company_merge.go

@@ -137,58 +137,60 @@ func (this *StatisticCompanyMergerController) MergeCompanyList() {
 	var conditionConfirm string
 	var parsConfirm []interface{}
 
-	companyConfirmList, err := company.GetCompanyNoRenewedAscribeList(conditionConfirm, parsConfirm, 0, 0)
+	companyConfirmList, err := company.GetCompanyContractNoRenewedAscribeList(conditionConfirm, parsConfirm, 0, 0)
 	if err != nil && err.Error() != utils.ErrNoRow() {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取失败,GetCompanyNoRenewedAscribeList Err:" + err.Error()
 		return
 	}
-	var noRenewedcompanyIds []int //已经确定未续约的公司ID
+	var noRenewedcompanyContractIds []int //已经确定未续约的公司ID
 	if len(companyConfirmList) == 0 {
-		noRenewedcompanyIds = append(noRenewedcompanyIds, 0) // 给一个不存在的ID
+		noRenewedcompanyContractIds = append(noRenewedcompanyContractIds, 0) // 给一个不存在的ID
 	} else {
 		for _, v := range companyConfirmList {
-			noRenewedcompanyIds = append(noRenewedcompanyIds, v.CompanyId)
+			noRenewedcompanyContractIds = append(noRenewedcompanyContractIds, v.CompanyContractId)
 		}
 	}
 	//是否确认续约 CRM 13.9
-	conditionAscribRaiTotal += ` AND  c.company_id IN (` + utils.GetOrmInReplace(len(noRenewedcompanyIds)) + `)  ` // 已确认
-	parsAscribeRaiTotal = append(parsAscribeRaiTotal, noRenewedcompanyIds)
+	conditionAscribRaiTotal += ` AND  a.company_contract_id IN (` + utils.GetOrmInReplace(len(noRenewedcompanyContractIds)) + `)  ` // 已确认
+	parsAscribeRaiTotal = append(parsAscribeRaiTotal, noRenewedcompanyContractIds)
 
-	conditionAscribRaiToBeTotal += ` AND c.company_id NOT IN (` + utils.GetOrmInReplace(len(noRenewedcompanyIds)) + `)   ` // 待确认
-	parsAscribeRaiTobeTotal = append(parsAscribeRaiTobeTotal, noRenewedcompanyIds)
+	conditionAscribRaiToBeTotal += ` AND a.company_contract_id NOT IN (` + utils.GetOrmInReplace(len(noRenewedcompanyContractIds)) + `)   ` // 待确认
+	parsAscribeRaiTobeTotal = append(parsAscribeRaiTobeTotal, noRenewedcompanyContractIds)
 
 	if isConfirm != -1 {
 		if isConfirm == 0 {
-			conditionAscribRai += ` AND  c.company_id NOT IN (` + utils.GetOrmInReplace(len(noRenewedcompanyIds)) + `)  ` // 待确认
+			conditionAscribRai += ` AND  a.company_contract_id NOT IN (` + utils.GetOrmInReplace(len(noRenewedcompanyContractIds)) + `)  ` // 待确认
 		} else {
-			conditionAscribRai += ` AND  c.company_id IN (` + utils.GetOrmInReplace(len(noRenewedcompanyIds)) + `)    ` // 已确认
+			conditionAscribRai += ` AND  a.company_contract_id IN (` + utils.GetOrmInReplace(len(noRenewedcompanyContractIds)) + `)    ` // 已确认
 		}
-		parsAscribeRai = append(parsAscribeRai, noRenewedcompanyIds)
+		parsAscribeRai = append(parsAscribeRai, noRenewedcompanyContractIds)
 	}
-
+	fmt.Println(noRenewedcompanyContractIds)
 	//归因ID CRM 13.9
 	if companyAscribeId > 0 {
 		var conditionAscribe string
 		var parsAscribe []interface{}
 		conditionAscribe = "  AND  company_ascribe_id = ? "
 		parsAscribe = append(parsAscribe, companyAscribeId)
-		companyNoRenewedAscribeList, err := company.GetCompanyNoRenewedAscribeList(conditionAscribe, parsAscribe, 0, 0)
+		companyNoRenewedAscribeList, err := company.GetCompanyContractNoRenewedAscribeList(conditionAscribe, parsAscribe, 0, 0)
 		if err != nil && err.Error() != utils.ErrNoRow() {
 			br.Msg = "获取失败"
 			br.ErrMsg = "获取失败,GetCompanyNoRenewedAscribeList Err:" + err.Error()
 			return
 		}
-		var companyIds []int
+		var noRenewedcompanyContractIds []int
 		if len(companyNoRenewedAscribeList) == 0 {
-			companyIds = append(companyIds, 0) // 给一个不存在的ID
+			noRenewedcompanyContractIds = append(noRenewedcompanyContractIds, 0) // 给一个不存在的ID
 		} else {
 			for _, v := range companyNoRenewedAscribeList {
-				companyIds = append(companyIds, v.CompanyId)
+				noRenewedcompanyContractIds = append(noRenewedcompanyContractIds, v.CompanyContractId)
 			}
 		}
-		conditionAscribRai += ` AND c.company_id IN (` + utils.GetOrmInReplace(len(companyIds)) + `)`
-		parsAscribeRai = append(parsAscribeRai, companyIds)
+		conditionAscribRai += ` AND a.company_contract_id IN (` + utils.GetOrmInReplace(len(noRenewedcompanyContractIds)) + `)`
+		parsAscribeRai = append(parsAscribeRai, noRenewedcompanyContractIds)
+
+		fmt.Println(parsAscribeRai)
 	}
 
 	condition += ` AND c.product_id = ?   AND  a.status = 1 `
@@ -536,58 +538,10 @@ func MergeCompanyListListExport(this *StatisticCompanyMergerController, dataType
 	cellSellerName.SetStyle(style)
 	cellSellerName.SetValue("所属销售")
 
-	//permissionMap := make(map[int][]string)
-	//tmpPermissionMap := make(map[int]map[string][]string)
-	//companyContractIdList := make([]string, 0)
-	//for _, v := range resp.List {
-	//	companyContractIdList = append(companyContractIdList, fmt.Sprint(v.CompanyContractId))
-	//}
-	//if dataType == "新签客户" || dataType == "续约客户" {
 	cellMoney := titleRow.AddCell()
 	cellMoney.SetStyle(style)
 	cellMoney.SetValue("合同金额")
 
-	//这么大费周章的目的是为了:权益的品种存在主观、客观的区分,如果一个品种既存在主观,又存在客观,那么就展示品种名称,否则就要列出品种名称+主、客观类型
-	//if len(companyContractIdList) > 0 {
-	//	list, tmpErr := company.GetCompanyContractPermissionListByContractIds(strings.Join(companyContractIdList, ","))
-	//	if tmpErr != nil {
-	//		err = tmpErr
-	//		return
-	//	}
-	//	for _, v := range list {
-	//		tmpPermissionNameMap, ok := tmpPermissionMap[v.CompanyContractId]
-	//		if ok {
-	//			tmpPermissionNameList, ok2 := tmpPermissionNameMap[v.ChartPermissionName]
-	//			if ok2 {
-	//				tmpPermissionNameList = append(tmpPermissionNameList, v.PermissionRemark)
-	//			} else {
-	//				tmpPermissionNameList = []string{v.PermissionRemark}
-	//			}
-	//			tmpPermissionNameMap[v.ChartPermissionName] = tmpPermissionNameList
-	//		} else {
-	//			tmpPermissionNameMap = make(map[string][]string)
-	//			tmpPermissionNameMap[v.ChartPermissionName] = []string{v.PermissionRemark}
-	//		}
-	//		tmpPermissionMap[v.CompanyContractId] = tmpPermissionNameMap
-	//	}
-	//}
-	//}
-
-	//for companyContractId, tmpPermissionNameMap := range tmpPermissionMap {
-	//	tmpPermissionName := ``
-	//	tmpPermissionList := []string{}
-	//	for tmpChartPermissionName, tmpChartPermissionNameList := range tmpPermissionNameMap {
-	//		if len(tmpChartPermissionNameList) > 1 {
-	//			tmpPermissionName = tmpChartPermissionName
-	//		} else {
-	//			tmpPermissionName = tmpChartPermissionNameList[0]
-	//		}
-	//		tmpPermissionList = append(tmpPermissionList, tmpPermissionName)
-	//	}
-	//
-	//	permissionMap[companyContractId] = tmpPermissionList
-	//}
-
 	cellTime := titleRow.AddCell()
 	cellTime.SetStyle(style)
 	switch dataType {

+ 151 - 0
models/company/company_contract_no_renewed_ascribe.go

@@ -0,0 +1,151 @@
+package company
+
+//合同未续约说明
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+type CompanyContractNoRenewedAscribe struct {
+	NoRenewedAscribeId int       `orm:"column(no_renewed_ascribe_id);pk" description:"主键ID"`
+	CompanyAscribeId   int       `description:"归因ID"`
+	AscribeContent     string    `description:"归因说明"`
+	Content            string    `description:"内容说明"`
+	AdminId            int       `description:"管理员ID"`
+	CompanyId          int       `description:"公司ID"`
+	CompanyContractId  int       `description:"合同id"`
+	ProductId          int       `description:"产品id"`
+	CreateTime         time.Time `description:"创建时间"`
+	ModifyTime         time.Time `description:"更新时间"`
+}
+
+type CompanyContractNoRenewedAscribeLog struct {
+	NoRenewedAscribeId int       `orm:"column(no_renewed_ascribe_id);pk" description:"主键ID"`
+	CompanyAscribeId   int       `description:"归因ID"`
+	AscribeContent     string    `description:"归因说明"`
+	Content            string    `description:"内容说明"`
+	AdminId            int       `description:"管理员ID"`
+	CompanyId          int       `description:"公司ID"`
+	CompanyContractId  int       `description:"合同id"`
+	ProductId          int       `description:"产品id"`
+	CreateTime         time.Time `description:"创建时间"`
+	ModifyTime         time.Time `description:"更新时间"`
+}
+
+type CompanyContractNoRenewedAscribeResp struct {
+	NoRenewedAscribeId int    `description:"主键ID"`
+	CompanyAscribeId   int    `description:"归因ID"`
+	AscribeContent     string `description:"归因说明"`
+	ProductId          int    `description:"产品id"`
+	Content            string `description:"内容说明"`
+	AdminId            int    `description:"管理员ID"`
+	CompanyId          int    `description:"公司ID"`
+	CompanyContractId  int    `description:"合同id"`
+	CreateTime         string `description:"创建时间"`
+	ModifyTime         string `description:"更新时间"`
+}
+type CompanyContractNoRenewedAscribeListResp struct {
+	List []*CompanyContractNoRenewedAscribeResp
+}
+
+type CompanyContractNoRenewedAscribeDetailResp struct {
+	Detail *CompanyContractNoRenewedAscribeResp
+}
+
+type CompanyContractNoRenewedAscribeReq struct {
+	CompanyAscribeId  int    `description:"归因ID"`
+	ProductId         int    `description:"产品id"`
+	Content           string `description:"内容说明"`
+	CompanyId         int    `description:"公司ID"`
+	CompanyContractId int    `description:"合同id"`
+}
+
+// 添加
+func AddCompanyContractNoRenewedAscribe(item *CompanyContractNoRenewedAscribe, itemLog *CompanyContractNoRenewedAscribeLog) (err error) {
+	o := orm.NewOrm()
+	to, err := o.Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err != nil {
+			_ = to.Rollback()
+		} else {
+			_ = to.Commit()
+		}
+	}()
+	_, err = to.Insert(item)
+	if err != nil {
+		return
+	}
+
+	_, err = to.Insert(itemLog)
+	return
+}
+
+// 修改
+func UpdateCompanyContractNoRenewedAscribe(item *CompanyContractNoRenewedAscribe, itemLog *CompanyContractNoRenewedAscribeLog) (err error) {
+	o := orm.NewOrm()
+	to, err := o.Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err != nil {
+			_ = to.Rollback()
+		} else {
+			_ = to.Commit()
+		}
+	}()
+	updateParams := make(map[string]interface{})
+	updateParams["CompanyAscribeId"] = item.CompanyAscribeId
+	updateParams["ModifyTime"] = item.ModifyTime
+	updateParams["Content"] = item.Content
+	updateParams["AscribeContent"] = item.AscribeContent
+	ptrStructOrTableName := "company_contract_no_renewed_ascribe"
+	whereParam := map[string]interface{}{"company_id": item.CompanyId, "company_contract_id": item.CompanyContractId}
+	qs := to.QueryTable(ptrStructOrTableName)
+	for expr, exprV := range whereParam {
+		qs = qs.Filter(expr, exprV)
+	}
+	_, err = qs.Update(updateParams)
+	if err != nil {
+		return
+	}
+	_, err = to.Insert(itemLog)
+	return
+}
+
+// 获取数量
+func GetCompanyContractNoRenewedAscribeCount(condition string, pars []interface{}) (count int, err error) {
+	sqlCount := ` SELECT COUNT(1) AS count  FROM company_contract_no_renewed_ascribe as a WHERE 1= 1  `
+	if condition != "" {
+		sqlCount += condition
+	}
+	o := orm.NewOrm()
+	err = o.Raw(sqlCount, pars).QueryRow(&count)
+	return
+}
+
+// 通过ID获取详情
+func GetCompanyContractNoRenewedAscribeDetail(companyContractId int) (item *CompanyContractNoRenewedAscribeResp, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM company_contract_no_renewed_ascribe   WHERE company_contract_id=?  `
+	err = o.Raw(sql, companyContractId).QueryRow(&item)
+	return
+}
+
+// 列表
+func GetCompanyContractNoRenewedAscribeList(condition string, pars []interface{}, startSize, pageSize int) (items []*CompanyContractNoRenewedAscribeResp, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM company_contract_no_renewed_ascribe as a  WHERE 1= 1 `
+	if condition != "" {
+		sql += condition
+	}
+	if startSize+pageSize > 0 {
+		sql += ` LIMIT ?,?  `
+		_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	}
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}

+ 1 - 1
models/company/company_no_renewed_ascribe.go

@@ -123,7 +123,7 @@ func GetCompanyNoRenewedAscribeCount(condition string, pars []interface{}) (coun
 }
 
 // 通过ID获取详情
-func GetCygxProductInteriorDetail(companyId, productId int) (item *CompanyNoRenewedAscribeResp, err error) {
+func GetCompanyNoRenewedAscribeDetail(companyId, productId int) (item *CompanyNoRenewedAscribeResp, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT * FROM company_no_renewed_ascribe   WHERE company_id=?  AND product_id = ? `
 	err = o.Raw(sql, companyId, productId).QueryRow(&item)

+ 2 - 0
models/db.go

@@ -260,6 +260,8 @@ func initCompany() {
 		new(company.CompanyNoRenewedNote),                    // 客户未续约记录
 		new(company.CompanyNoRenewedAscribe),                 // 确认不续约记录
 		new(company.CompanyNoRenewedAscribeLog),              // 确认不续约记录日志
+		new(company.CompanyContractNoRenewedAscribe),         // 合同确认不续约记录
+		new(company.CompanyContractNoRenewedAscribeLog),      // 合同确认不续约记录日志
 		new(company.CrmConfig),                               // 管理后台基本配置表
 	)
 }

+ 18 - 0
routers/commentsRouter.go

@@ -9457,6 +9457,24 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:CompanyRenewalController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:CompanyRenewalController"],
+        beego.ControllerComments{
+            Method: "CompanyContractNoRenewedAscribeAdd",
+            Router: `/company_contract_no_renewed_ascribe/add`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:CompanyRenewalController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:CompanyRenewalController"],
+        beego.ControllerComments{
+            Method: "CompanyContractNoRenewedAscribeAddDetail",
+            Router: `/company_contract_no_renewed_ascribe/detail`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:CompanyRenewalController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:CompanyRenewalController"],
         beego.ControllerComments{
             Method: "CompanyNoRenewedAscribeAdd",