Procházet zdrojové kódy

工单受理人可配置处理

WH01243 před 11 měsíci
rodič
revize
fb46fed010

+ 13 - 7
entity/entity.go

@@ -63,7 +63,6 @@ var (
 	OssBucketName    string
 	OssUrl           string
 	FileCenterRpc    filecenter.FileCenter
-	ProductMap       map[string]bool
 )
 
 type HlyjS struct {
@@ -78,6 +77,19 @@ type HlyjS struct {
 
 type Handler struct {
 }
+type ProductMap struct {
+	Product     string
+	ProductCode string
+	PersonArr   []Person
+}
+type Person struct {
+	Name  string
+	Phone string
+}
+type SelectProductMap struct {
+	Product   []string
+	PersonArr []Person
+}
 
 func InitMail(GmailAuthArr []struct {
 	Addr string
@@ -277,9 +289,3 @@ func InitMiddleground(host []string, resourceCenterKey string) {
 		RegResourceCenter(resourceCenterKey)
 
 }
-
-func ProductInit(productArr []string) {
-	for _, v := range productArr {
-		ProductMap[v] = true
-	}
-}

+ 30 - 26
rpc/etc/biservice.yaml

@@ -9,20 +9,20 @@ Mode: test
 Mysql:
   JianYu:
     DBName: jianyu
-    Address:  192.168.3.14:4000
+    Address: 192.168.3.14:4000
     UserName: root
     PassWord: =PDT49#80Z!RVv52_z
     MaxOpenConns: 5
     MaxIdleConns: 5
   JyDoc:
     DBName: jydocs
-    Address:  192.168.3.14:4000
+    Address: 192.168.3.14:4000
     UserName: root
     PassWord: =PDT49#80Z!RVv52_z
     MaxOpenConns: 5
     MaxIdleConns: 5
   Bi:
-    DBName: jianyu_subjectdb
+    DBName: jianyu_subjectdb_test
     Address: 192.168.3.149:4000
     UserName: xuzhiheng
     PassWord: Xzh#20221122K
@@ -36,7 +36,7 @@ Mysql:
     MaxOpenConns: 5
     MaxIdleConns: 5
   BiTidb:
-    DBName: jianyu_subjectdb
+    DBName: jianyu_subjectdb_test
     Address: 192.168.3.149:4000
     UserName: root
     PassWord: "Tibi#20211222"
@@ -142,27 +142,31 @@ FileCenterRpc:
     Key: filecenter.rpc
 ossBucketName: jytest2022
 ossUrl: https://jytest2022.oss-cn-beijing.aliyuncs.com
-allocationCap: 400
-productArr :
-  - 数据流量包
-  - 结构化数据
-  - API接口
-  - 广告服务
-  - 市场分析报告
-entId: 1949
-dkPersonMap:
-  - personName: 孙振杰
-    phone: 18103853130
-  - personName: 朱凤超
-    phone: 13027770072
-  - personName: 张文福
-    phone: 15615600992
-  - personName: 王普
-    phone: 13683808356
-scProductArr :
-  - 物业专版
-scDkPersonMap :
-  - personName: 张文福
-    phone: 15615600992
+allocationCap: 20
+entId: 25917
+productArr:
+  - product: 数据流量包,结构化数据,API接口,广告服务,广告服务
+    productCode: dk
+    personArr:
+      - name: 孙振杰
+        phone: '18103853130'
+      - name: 朱凤超
+        phone: '13027770072'
+      - name: 张文福
+        phone: '15615600992'
+      - name: 王普
+        phone: '13683808356'
+  - product: 物业专版
+    productCode: scdk
+    personArr:
+      - name: 朱凤超
+        phone: '13027770072'
+  - product: 咨询服务
+    productCode: zx
+    personArr:
+      - name: 张鹏
+        phone: '13027770072'
+
+
 
 

+ 5 - 4
rpc/internal/config/config.go

@@ -2,12 +2,16 @@ package config
 
 import (
 	"app.yhyue.com/moapp/jybase/mysql"
+	"bp.jydev.jianyu360.cn/BaseService/biService/entity"
 	"github.com/zeromicro/go-zero/core/logx"
 	"github.com/zeromicro/go-zero/zrpc"
 )
 
 var IC Config
 
+type ProductMap struct {
+}
+
 type Config struct {
 	zrpc.RpcServerConf
 	UserCenterRpc zrpc.RpcClientConf
@@ -92,9 +96,6 @@ type Config struct {
 	OssBucketName     string
 	OssUrl            string
 	AllocationCap     int64
-	DkPersonMap       []map[string]interface{}
-	ProductArr        []string
+	ProductArr        []entity.ProductMap
 	EntId             int64
-	ScDkPersonMap     []map[string]interface{}
-	ScProductArr      []string
 }

+ 1 - 10
rpc/internal/logic/addacceptancelogic.go

@@ -27,19 +27,10 @@ func NewAddAcceptanceLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Add
 
 func (l *AddAcceptanceLogic) AddAcceptance(in *pb.AcceptanceReq) (*pb.AcceptanceResp, error) {
 	// todo: add your logic here and delete this line
-	productMap := map[string]string{}
-	for _, v := range IC.IC.ProductArr {
-		productMap[v] = "dk"
-	}
-	scProductMap := map[string]string{}
-	for _, v := range IC.IC.ScProductArr {
-		scProductMap[v] = "scdk"
-	}
-
 	return &pb.AcceptanceResp{
 		ErrorCode: 0,
 		Data: &pb.Acceptance{
-			AcceptanceNo: service.AddAcceptance(in, IC.IC.DkPersonMap, IC.IC.ScDkPersonMap, IC.IC.EntId, productMap, scProductMap),
+			AcceptanceNo: service.AddAcceptance(in, IC.IC.ProductArr, IC.IC.EntId),
 		},
 	}, nil
 }

+ 31 - 38
service/acceptance.go

@@ -16,7 +16,7 @@ import (
 	"time"
 )
 
-func AddAcceptance(in *biservice.AcceptanceReq, DkPersonMap, ScDkPersonMap []map[string]interface{}, entId int64, productMap map[string]string, scProductMap map[string]string) string {
+func AddAcceptance(in *biservice.AcceptanceReq, productMap []ProductMap, entId int64) string {
 	in.ParamData = strings.ReplaceAll(in.ParamData, "\n", "")
 	nowTime := time.Now().Format(date.Date_Full_Layout)
 	//编号处理
@@ -78,33 +78,28 @@ func AddAcceptance(in *biservice.AcceptanceReq, DkPersonMap, ScDkPersonMap []map
 				}
 			}
 			//判断是否创建工单
-			dkProduct := []string{}
-			scdkProduct := []string{}
-			dkOk, scDkOk := false, false
+			selectedProductMap := map[string]SelectProductMap{}
+			productArr := []string{}
 			if _, isOk := childMap["咨询产品"]; isOk {
 				for _, v := range strings.Split(gconv.String(childMap["咨询产品"]), ",") {
-					if productMap[v] != "" {
-						dkProduct = append(dkProduct, v)
-						dkOk = true
-						continue
+					for _, product := range productMap {
+						if strings.Contains(product.Product, v) {
+							selectedProduct := selectedProductMap[product.ProductCode]
+							selectedProduct.PersonArr = product.PersonArr
+							selectedProduct.Product = append(selectedProduct.Product, v)
+							productArr = append(productArr, v)
+							selectedProductMap[product.ProductCode] = selectedProduct
+							continue
+						}
 					}
-					if scProductMap[v] != "" {
-						scdkProduct = append(scdkProduct, v)
-						scDkOk = true
-						continue
-					}
-					is_clue = 2
+
 				}
-			}
-			if dkOk {
-				//大客工单保存
-				if !AddOrderWork("dk", acceptance_no, nowTime, phone, company, tx, in, DkPersonMap, entId, dkProduct) {
-					return false
+				if len(strings.Split(gconv.String(childMap["咨询产品"]), ",")) != len(productArr) {
+					is_clue = 2
 				}
 			}
-			if scDkOk {
-				//大客工单保存
-				if !AddOrderWork("scdk", acceptance_no, nowTime, phone, company, tx, in, ScDkPersonMap, entId, scdkProduct) {
+			for k, v := range selectedProductMap {
+				if !AddOrderWork(k, acceptance_no, nowTime, phone, company, tx, in, v, entId) {
 					return false
 				}
 			}
@@ -125,13 +120,13 @@ func AddAcceptance(in *biservice.AcceptanceReq, DkPersonMap, ScDkPersonMap []map
 	return ""
 
 }
-func AddOrderWork(orderType, acceptance_no, nowTime, phone, company string, tx *sql.Tx, in *biservice.AcceptanceReq, PersonMapArr []map[string]interface{}, entId int64, product []string) bool {
+func AddOrderWork(orderType, acceptance_no, nowTime, phone, company string, tx *sql.Tx, in *biservice.AcceptanceReq, selectPersonMap SelectProductMap, entId int64) bool {
 	dkPerson := ""
 	dkdeptName := ""
 	dkdeptId := ""
 	dkPositionId := int64(0)
 	personMap := map[string]interface{}{}
-	personMap = Findcandidate(PersonMapArr, entId, orderType)
+	personMap = Findcandidate(selectPersonMap.PersonArr, entId, orderType)
 	dkPositionId = gconv.Int64(personMap["positionId"])
 	dkPerson = gconv.String(personMap["name"])
 	dkdeptId = gconv.String(personMap["deptId"])
@@ -141,7 +136,7 @@ func AddOrderWork(orderType, acceptance_no, nowTime, phone, company string, tx *
 		orderWorkMap := map[string]interface{}{
 			"work_order_no":         work_order_no,
 			"acceptance_no":         acceptance_no,
-			"type":                  strings.Join(product, ","),
+			"type":                  strings.Join(selectPersonMap.Product, ","),
 			"status":                1,
 			"initiator_name":        in.EntUserName,
 			"initiator_position_id": in.PositionId,
@@ -156,6 +151,7 @@ func AddOrderWork(orderType, acceptance_no, nowTime, phone, company string, tx *
 			"department_name":       dkdeptName,
 			"update_time":           nil,
 		}
+		logx.Info(orderWorkMap, "11111", selectPersonMap)
 		ok3 := WorkOrder.InsertByTx(tx, "order_work", orderWorkMap)
 		if ok3 <= 0 {
 			log.Println("工单保存失败")
@@ -182,26 +178,26 @@ func AddOrderWork(orderType, acceptance_no, nowTime, phone, company string, tx *
 			return false
 		}
 		log.Println(personMap)
-		log.Println(GmailAuth, personMap, strings.Join(product, ","), dkPerson, in.EntUserName, nowTime, work_order_no, phone, company)
-		WorkMail(GmailAuth, personMap, strings.Join(product, ","), dkPerson, in.EntUserName, nowTime, work_order_no, phone, company)
+		log.Println(GmailAuth, personMap, strings.Join(selectPersonMap.Product, ","), dkPerson, in.EntUserName, nowTime, work_order_no, phone, company)
+		WorkMail(GmailAuth, personMap, strings.Join(selectPersonMap.Product, ","), dkPerson, in.EntUserName, nowTime, work_order_no, phone, company)
 	}
 	return true
 
 }
 
 // 大客人员选择
-func Findcandidate(DkPersonMap []map[string]interface{}, entId int64, orderType string) map[string]interface{} {
+func Findcandidate(personArr []Person, entId int64, orderType string) map[string]interface{} {
 	person := map[string]interface{}{}
 	positionArr := []string{}
 	personMap := map[string]map[string]interface{}{}
 	positionId := int64(0)
 	phoneArr := []string{}
 	personNameArr := []string{}
-	for _, v := range DkPersonMap {
-		phoneArr = append(phoneArr, fmt.Sprintf(`"%s"`, gconv.String(v["phone"])))
-		personNameArr = append(personNameArr, fmt.Sprintf(`"%s"`, gconv.String(v["personName"])))
-		personMap[gconv.String(v["phone"])] = map[string]interface{}{
-			"name": gconv.String(v["personName"]),
+	for _, v := range personArr {
+		phoneArr = append(phoneArr, fmt.Sprintf(`"%s"`, v.Phone))
+		personNameArr = append(personNameArr, fmt.Sprintf(`"%s"`, v.Name))
+		personMap[gconv.String(v.Phone)] = map[string]interface{}{
+			"name": gconv.String(v.Name),
 		}
 	}
 	//个人邮箱,部门信息获取
@@ -251,9 +247,9 @@ FROM
 		GROUP BY   current_position_id 
 		ORDER BY
 			count ,FIELD(current_name,?) asc `, strings.Join(positionArr, ","), orderType, strings.Join(personNameArr, ","))
-	if positionNumberMap != nil && len(*positionNumberMap) == len(DkPersonMap) {
+	if positionNumberMap != nil && len(*positionNumberMap) == len(personArr) {
 		positionId = gconv.Int64((*positionNumberMap)[0]["current_position_id"])
-	} else if positionNumberMap != nil && len(*positionNumberMap) != len(DkPersonMap) {
+	} else if positionNumberMap != nil && len(*positionNumberMap) != len(personArr) {
 		for _, v := range positionArr {
 			count := int64(0)
 			for _, v1 := range *positionNumberMap {
@@ -344,14 +340,11 @@ func WorkMail(gmailAuth []*mail.GmailAuth, personMap map[string]interface{}, pro
 	if gconv.String(common.If(gconv.String(personMap["superiorDepthPersonMail"]) == "", "", gconv.String(personMap["superiorDepthPersonMail"]))) != "" {
 		mailArr = append(mailArr, gconv.String(common.If(gconv.String(personMap["superiorDepthPersonMail"]) == "", "", gconv.String(personMap["superiorDepthPersonMail"]))))
 	}
-
 	toCc := strings.Join(mailArr, ",")
 	if len(mailArr) > 0 {
 		toMail = fmt.Sprintf("%s|%s", toMail, toCc)
 	}
 	log.Println(toMail, "", title, content)
-	/*toMail = "wanghao@topnet.net.cn"
-	toCc = "wanghao@topnet.net.cn"*/
 	for k, v := range gmailAuth {
 		fool := mail.GSendMail_q("剑鱼标讯", toMail, "", "", title, content, "", "", v)
 		if fool {