Jelajahi Sumber

feature: 支持工单添加支持人员处理、产品线处理

liuyaqi 2 tahun lalu
induk
melakukan
a4bd62189f

+ 1 - 0
opms_libary/plugin/dingtalk/base/base.go

@@ -49,6 +49,7 @@ Do:
 	}
 	defer response.Body.Close()
 
+	fmt.Println(response.StatusCode, response.Status)
 	resp, err = ioutil.ReadAll(response.Body)
 
 	if err != nil {

+ 2 - 2
opms_parent/app/handler/work/work_order.go

@@ -99,7 +99,7 @@ func (w *WorkOrderHandler) CreateWorkOrder(ctx context.Context, req *model.WorkO
 	if err := gvalid.CheckStruct(ctx, req, nil); err != nil {
 		return err
 	}
-	err = orderService.CreateWorkOrder(req, nil)
+	err = orderService.CreateWorkOrder(ctx, req, nil)
 	if err != nil {
 		return err
 	}
@@ -160,7 +160,7 @@ func (w *WorkOrderHandler) CreateUploadFileOrder(ctx context.Context, formData *
 		return myerrors.TipsError("文件路径不能为空")
 	}
 
-	err = orderService.CreateWorkOrder(req, formData)
+	err = orderService.CreateWorkOrder(ctx, req, formData)
 	if err != nil {
 		rsp.Code = 500
 		rsp.Msg = "系统异常"

+ 12 - 0
opms_parent/app/service/base.go

@@ -389,6 +389,18 @@ func UserIdByRoles(db gdb.DB, roles ...string) ([]int, error) {
 	return ColumnInt(db.Table("sys_user_role").Where("role_id in (?)", roleId), "user_id")
 }
 
+func UserDingtalkUid(db gdb.DB, id int) (string, error) {
+	v, err := db.Table("sys_user").Where("id = ?", id).Fields("dingtalk_uid").Value()
+	if err != nil {
+		return "", err
+	}
+	uid := v.String()
+	if uid == "" {
+		return "", fmt.Errorf("没有找到 %d 的钉钉用户id", id)
+	}
+	return uid, nil
+}
+
 func SliceIntDeduplication(elems []int) []int {
 	emap := map[int]struct{}{}
 	for _, i := range elems {

+ 40 - 2
opms_parent/app/service/work/work_order.go

@@ -260,7 +260,7 @@ func extractFileInfo(v interface{}) (fileinfo []contractModel.DingFileInfo, err
 	return
 }
 
-func (s *OrderService) CreateWorkOrder(req *model.WorkOrderReq, args *multipart.Form) (err error) {
+func (s *OrderService) CreateWorkOrder(ctx context.Context, req *model.WorkOrderReq, args *multipart.Form) (err error) {
 	data := new(model.WorkOrder)
 	if err = gconv.Struct(req, data); err != nil {
 		return
@@ -273,11 +273,43 @@ func (s *OrderService) CreateWorkOrder(req *model.WorkOrderReq, args *multipart.
 	if p == nil {
 		return myerrors.TipsError("项目不存在")
 	}
-	data.ProductLine = p.ProductLine
 
 	data.OrderStatus = "20"
 	service.SetCreatedInfo(data, s.GetCxtUserId(), s.GetCxtUserName())
 
+	// 处理支持人员
+	for i, v := range req.FormData {
+		if v.Name == "支持人员" {
+			uid, err := service.UserDingtalkUid(s.Dao.DB, req.AssignUserId)
+			if err != nil {
+				return err
+			}
+			uidlist, _ := json.Marshal([]string{uid})
+			req.FormData[i].Value = string(uidlist)
+			g.Log().Info(uid,string(uidlist), req.AssignUserId, req.AssignUserName)
+		}
+	}
+
+	// 处理产品线
+	var pl string
+	for _, v := range req.FormData {
+		if v.Name == "产品线" {
+			pl, _ = v.Value.(string)
+		}
+	}
+	if pl != "" {
+		productLine, err := service.GetDictDataByType(ctx, "sys_product_line")
+		if err != nil {
+			return err
+		}
+		productLineMap := map[string]string{}
+		for k, v := range productLine {
+			productLineMap[v] = k
+		}
+		data.ProductLine = productLineMap[pl]
+		g.Log().Info(pl, data.ProductLine, productLineMap, productLine)
+	}
+
 	fileInfo := []contractModel.DingFileInfo{}
 	for _, v := range req.FormData {
 		if v.ComponentName != "DDAttachment" {
@@ -311,6 +343,12 @@ func (s *OrderService) CreateWorkOrder(req *model.WorkOrderReq, args *multipart.
 		// 	}
 		// 	return s.AddDynamicsByCurrentUser(tx, int(lastId), "创建工单", map[string]interface{}{})
 		// }
+		// fmt.Println(data.ProductLine)
+		// fmt.Println(data.AssignUserId)
+		// fmt.Println(data.AssignUserName)
+		// aa, _ := json.Marshal(formComponentValues)
+		// fmt.Println(string(aa))
+		// return fmt.Errorf("test")
 
 		// 更新项目调级
 		lastId, err := s.Dao.TX(tx).Data(data).InsertAndGetId()