ziwen 2 年之前
父节点
当前提交
72681ceb3a
共有 3 个文件被更改,包括 77 次插入4 次删除
  1. 26 3
      models/crm/contract_service.go
  2. 8 0
      models/fms/contract_service_template.go
  3. 43 1
      services/crm/contract.go

+ 26 - 3
models/crm/contract_service.go

@@ -8,6 +8,7 @@ type ContractServiceAndDetail struct {
 	ContractId         int    `description:"合同id"`
 	ProductId          int    `description:"产品id,1:ficc;2:权益"`
 	ServiceTemplateId  int    `description:"合同服务模板id"`
+	Pid                int    `json:"pid" description:"父级ID"`
 	Title              string `description:"套餐标题"`
 	Value              string `description:"套餐的值"`
 	HasDetail          string `description:"是否有详情,枚举值:是、否;默认:否"`
@@ -22,6 +23,7 @@ type ContractServiceAndDetailQueryItem struct {
 	ContractId        int    `description:"合同id"`
 	ProductId         int    `description:"产品id,1:ficc;2:权益"`
 	ServiceTemplateId int    `description:"合同服务模板id"`
+	Pid               int    `json:"pid" description:"父级ID"`
 	Title             string `description:"套餐标题"`
 	Value             string `description:"套餐的值"`
 	HasDetail         string `description:"是否有详情,枚举值:是、否;默认:否"`
@@ -29,9 +31,9 @@ type ContractServiceAndDetailQueryItem struct {
 	ChartPermissionId int    `description:"权限id"`
 }
 
-func GetContractServiceAndDetailList(contractId int) (list []*ContractServiceAndDetail, err error) {
+func GetContractServiceAndDetailList(contractId int) (list []*ContractServiceAndDetailRespItem, err error) {
 	results := make([]*ContractServiceAndDetailQueryItem, 0)
-	list = make([]*ContractServiceAndDetail, 0)
+	list = make([]*ContractServiceAndDetailRespItem, 0)
 	query := global.MYSQL["report"].
 		Table("contract_service").
 		Where("contract_id = ?", contractId)
@@ -40,11 +42,12 @@ func GetContractServiceAndDetailList(contractId int) (list []*ContractServiceAnd
 		return
 	}
 	for i := range results {
-		list = append(list, &ContractServiceAndDetail{
+		list = append(list, &ContractServiceAndDetailRespItem{
 			ContractServiceId: results[i].ContractServiceId,
 			ContractId:        results[i].ContractId,
 			ProductId:         results[i].ProductId,
 			ServiceTemplateId: results[i].ServiceTemplateId,
+			Pid:               results[i].Pid,
 			Title:             results[i].Title,
 			Value:             results[i].Value,
 			HasDetail:         results[i].HasDetail,
@@ -54,3 +57,23 @@ func GetContractServiceAndDetailList(contractId int) (list []*ContractServiceAnd
 	}
 	return
 }
+
+// ContractServiceAndDetailRespItem
+type ContractServiceAndDetailRespItem struct {
+	ContractServiceId     int    `description:"套餐ID"`
+	ContractId            int    `description:"合同id"`
+	ProductId             int    `description:"产品id,1:ficc;2:权益"`
+	ServiceTemplateId     int    `description:"合同服务模板id"`
+	Pid                   int    `json:"pid" description:"父级ID"`
+	Title                 string `description:"套餐标题"`
+	Value                 string `description:"套餐的值"`
+	HasDetail             string `description:"是否有详情,枚举值:是、否;默认:否"`
+	TableValue            string `description:"表格数据,用于word生成时的json数据"`
+	ChartPermissionId     int    `description:"权限id"`
+	ChartPermissionIds    []int  `description:"小套餐-权限IDs"`
+	FMSServiceTemplateId  int    `description:"fms里的模版id"`
+	FMSServiceTemplatePId int    `description:"fms里的父级模版id"`
+	FMSTitle              string `description:"fms里的模版名称"`
+	FMSPTitle             string `description:"fms里的父级模版名称"`
+	DetailList            []*ContractServiceDetail
+}

+ 8 - 0
models/fms/contract_service_template.go

@@ -153,4 +153,12 @@ func GetContractServiceTemplateFullName() (items []*ContractServiceTemplateFullN
 		Order("t1.service_template_id ASC").
 		Find(&items).Error
 	return
+}
+
+// GetContractServiceTemplateByTitle 用名称获取合同套餐模板
+func GetContractServiceTemplateByTitle(titles string) (items []*ContractServiceTemplate, err error) {
+	err = global.DEFAULT_MYSQL.Model(ContractServiceTemplate{}).
+		Where("title IN (?)", titles).
+		Scan(&items).Error
+	return
 }

+ 43 - 1
services/crm/contract.go

@@ -5,9 +5,11 @@ import (
 	"errors"
 	"fmt"
 	"hongze/fms_api/models/crm"
+	"hongze/fms_api/models/fms"
 	"hongze/fms_api/models/system"
 	"hongze/fms_api/utils"
 	"reflect"
+	"strconv"
 	"strings"
 )
 
@@ -81,12 +83,37 @@ func getContractDetail(contractId int) (contractDetail *crm.ContractDetail, err
 }
 
 // getContractServiceAndDetailList 根据合同Id获取服务详情列表
-func getContractServiceAndDetailList(contractId int) (serviceList []*crm.ContractServiceAndDetail, err error) {
+func getContractServiceAndDetailList(contractId int) (serviceList []*crm.ContractServiceAndDetailRespItem, err error) {
 	serviceList, err = crm.GetContractServiceAndDetailList(contractId)
 	if err != nil {
 		err = errors.New(fmt.Sprint("查找合同服务异常", err))
 		return
 	}
+
+	serviceTempCond := ``
+	serviceTempPars := make([]interface{}, 0)
+	serviceTempOB := new(fms.ContractServiceTemplate)
+	serviceTempList, e := serviceTempOB.List(serviceTempCond, serviceTempPars)
+	if e != nil {
+		return
+	}
+
+	templateMap := make(map[string]*fms.ContractServiceTemplate)
+	templateIdMap := make(map[int]string)
+	for _, v := range serviceTempList {
+		templateIdMap[v.ServiceTemplateId] = v.Title
+	}
+	for _, v := range serviceTempList {
+		if v.Title == "主观" || v.Title == "客观" {
+			pTitle := templateIdMap[v.Pid]
+			templateMap[pTitle+v.Title] = v
+		}else {
+			templateMap[v.Title] = v
+		}
+	}
+
+	fmsTemplateIdMap := make(map[int]string)
+
 	newLen := len(serviceList)
 	for i := 0; newLen > i; i++ {
 		if serviceList[i].HasDetail == "是" {
@@ -100,6 +127,21 @@ func getContractServiceAndDetailList(contractId int) (serviceList []*crm.Contrac
 			}
 			serviceList[i].DetailList = list
 		}
+		fmsTemplateIdMap[serviceList[i].ServiceTemplateId] = serviceList[i].Title
+	}
+	for _, v := range serviceList {
+		if v.Title ==  "主观" || v.Title == "客观" {
+			pTitle := fmsTemplateIdMap[v.Pid]
+			v.FMSServiceTemplateId = templateMap[pTitle+v.Title].ServiceTemplateId
+			v.FMSTitle = templateIdMap[v.FMSServiceTemplateId]
+			v.FMSServiceTemplatePId =templateMap[pTitle+v.Title].Pid
+			v.FMSPTitle = templateIdMap[v.Pid]
+		}else{
+			v.FMSServiceTemplateId = templateMap[v.Title].ServiceTemplateId
+			v.FMSTitle = templateIdMap[v.FMSServiceTemplateId]
+			v.FMSServiceTemplatePId =templateMap[v.Title].Pid
+			v.FMSPTitle = templateIdMap[v.Pid]
+		}
 	}
 	return
 }