Browse Source

feature:审批修改

sunxinyuan 1 year ago
parent
commit
2ea6d079a8

+ 46 - 106
opms_parent/app/dao/work/internal/work_order_type.go

@@ -6,16 +6,12 @@ package internal
 
 import (
 	"context"
+	model "dashoo.cn/micro/app/model/work"
 	"database/sql"
-	"github.com/gogf/gf/container/garray"
 	"github.com/gogf/gf/database/gdb"
 	"github.com/gogf/gf/frame/g"
 	"github.com/gogf/gf/frame/gmvc"
-	"github.com/gogf/gf/util/gconv"
-	"strings"
 	"time"
-
-	model "dashoo.cn/micro/app/model/work"
 )
 
 // WorkOrderTypeDao is the manager for logic model data accessing and custom defined data operations functions management.
@@ -29,19 +25,21 @@ type WorkOrderTypeDao struct {
 
 // WorkOrderTypeColumns defines and stores column names for table work_order_type.
 type workOrderTypeColumns struct {
-	Id           string // 主键
-	Name         string // 名称
-	WorkflowCode string // 关联流程
-	FormColumn   string // 关联表单
-	Sort         string // 排序
-	Remark       string // 备注
-	CreatedBy    string // 创建者
-	CreatedName  string // 创建人
-	CreatedTime  string // 创建时间
-	UpdatedBy    string // 更新者
-	UpdatedName  string // 更新人
-	UpdatedTime  string // 更新时间
-	DeletedTime  string // 删除时间
+	Id            string // 主键
+	Name          string // 名称
+	OrderTypeCode string // 工单类型编码
+	WorkflowType  string // 审批类型
+	WorkflowCode  string // 关联流程
+	FormColumn    string // 关联表单
+	Sort          string // 排序
+	Remark        string // 备注
+	CreatedBy     string // 创建者
+	CreatedName   string // 创建人
+	CreatedTime   string // 创建时间
+	UpdatedBy     string // 更新者
+	UpdatedName   string // 更新人
+	UpdatedTime   string // 更新时间
+	DeletedTime   string // 删除时间
 }
 
 var (
@@ -51,19 +49,21 @@ var (
 		DB:    g.DB("default"),
 		Table: "work_order_type",
 		C: workOrderTypeColumns{
-			Id:           "id",
-			Name:         "name",
-			WorkflowCode: "workflow_code",
-			FormColumn:   "form_column",
-			Sort:         "sort",
-			Remark:       "remark",
-			CreatedBy:    "created_by",
-			CreatedName:  "created_name",
-			CreatedTime:  "created_time",
-			UpdatedBy:    "updated_by",
-			UpdatedName:  "updated_name",
-			UpdatedTime:  "updated_time",
-			DeletedTime:  "deleted_time",
+			Id:            "id",
+			Name:          "name",
+			OrderTypeCode: "order_type_code",
+			WorkflowType:  "workflow_type",
+			WorkflowCode:  "workflow_code",
+			FormColumn:    "form_column",
+			Sort:          "sort",
+			Remark:        "remark",
+			CreatedBy:     "created_by",
+			CreatedName:   "created_name",
+			CreatedTime:   "created_time",
+			UpdatedBy:     "updated_by",
+			UpdatedName:   "updated_name",
+			UpdatedTime:   "updated_time",
+			DeletedTime:   "deleted_time",
 		},
 	}
 )
@@ -75,19 +75,21 @@ func NewWorkOrderTypeDao(tenant string) WorkOrderTypeDao {
 		DB:    g.DB(tenant),
 		Table: "work_order_type",
 		C: workOrderTypeColumns{
-			Id:           "id",
-			Name:         "name",
-			WorkflowCode: "workflow_code",
-			FormColumn:   "form_column",
-			Sort:         "sort",
-			Remark:       "remark",
-			CreatedBy:    "created_by",
-			CreatedName:  "created_name",
-			CreatedTime:  "created_time",
-			UpdatedBy:    "updated_by",
-			UpdatedName:  "updated_name",
-			UpdatedTime:  "updated_time",
-			DeletedTime:  "deleted_time",
+			Id:            "id",
+			Name:          "name",
+			OrderTypeCode: "order_type_code",
+			WorkflowType:  "workflow_type",
+			WorkflowCode:  "workflow_code",
+			FormColumn:    "form_column",
+			Sort:          "sort",
+			Remark:        "remark",
+			CreatedBy:     "created_by",
+			CreatedName:   "created_name",
+			CreatedTime:   "created_time",
+			UpdatedBy:     "updated_by",
+			UpdatedName:   "updated_name",
+			UpdatedTime:   "updated_time",
+			DeletedTime:   "deleted_time",
 		},
 	}
 	return dao
@@ -686,65 +688,3 @@ func (d *WorkOrderTypeDao) LockShared() *WorkOrderTypeDao {
 func (d *WorkOrderTypeDao) Unscoped() *WorkOrderTypeDao {
 	return &WorkOrderTypeDao{M: d.M.Unscoped(), Table: d.Table, TableAs: d.TableAs}
 }
-
-// DataScope enables the DataScope feature.
-func (d *WorkOrderTypeDao) DataScope(ctx context.Context, userCol ...string) *WorkOrderTypeDao {
-	cs := ctx.Value("contextService")
-	dataScope := gconv.Map(gconv.String(gconv.Map(cs)["dataScope"]))
-	if dataScope != nil {
-		tableAs := d.TableAs
-		if d.TableAs != "" {
-			tableAs += "."
-		}
-		userIds, ok := dataScope["userIds"]
-		delete(dataScope, "userIds")
-		var orColumns []string
-		var orValues []interface{}
-		if ok && userIds != "-1" {
-			column := "created_by"
-			if len(userCol) == 1 {
-				column = userCol[0]
-			}
-			if ok, _ := d.M.HasField(column); ok {
-				orColumns = append(orColumns, tableAs+column+" IN (?) ")
-				orValues = append(orValues, userIds)
-			}
-		}
-		// 销售工程师判断
-		var salesEngineerFlag bool
-		if roles, ok := dataScope["roles"]; ok {
-			arr := garray.NewArrayFrom(roles.([]interface{}), true)
-			if arr.Len() == 1 && arr.Contains("SalesEngineer") {
-				salesEngineerFlag = true
-			}
-		}
-		// 非销售工程师权限加成
-		if !salesEngineerFlag {
-			bigColumns := "is_big"
-			if ok, _ := d.M.HasField("is_big"); ok {
-				if val, ok := dataScope[bigColumns]; ok && val != "" {
-					orColumns = append(orColumns, tableAs+bigColumns+" = ? ")
-					orValues = append(orValues, val)
-				}
-				delete(dataScope, bigColumns)
-			}
-			var andColumns []string
-			var andValues []interface{}
-			for k, v := range dataScope {
-				if ok, _ := d.M.HasField(k); ok {
-					andColumns = append(andColumns, tableAs+k+" IN (?) ")
-					andValues = append(andValues, v)
-				}
-			}
-			if len(andColumns) > 0 {
-				andWhereSql := strings.Join(andColumns, " AND ")
-				orColumns = append(orColumns, "("+andWhereSql+")")
-				orValues = append(orValues, andValues...)
-			}
-		}
-
-		whereSql := strings.Join(orColumns, " OR ")
-		return &WorkOrderTypeDao{M: d.M.Where(whereSql, orValues...).Ctx(ctx), Table: d.Table, TableAs: d.TableAs}
-	}
-	return d
-}

+ 15 - 13
opms_parent/app/model/work/internal/work_order_type.go

@@ -10,17 +10,19 @@ import (
 
 // WorkOrderType is the golang structure for table work_order_type.
 type WorkOrderType struct {
-	Id           int         `orm:"id,primary"    json:"id"`           // 主键
-	Name         string      `orm:"name"          json:"name"`         // 名称
-	WorkflowCode string      `orm:"workflow_code" json:"workflowCode"` // 关联流程
-	FormColumn   string      `orm:"form_column"   json:"formColumn"`   // 关联表单
-	Sort         int         `orm:"sort"          json:"sort"`         // 排序
-	Remark       string      `orm:"remark"        json:"remark"`       // 备注
-	CreatedBy    int         `orm:"created_by"    json:"createdBy"`    // 创建者
-	CreatedName  string      `orm:"created_name"  json:"createdName"`  // 创建人
-	CreatedTime  *gtime.Time `orm:"created_time"  json:"createdTime"`  // 创建时间
-	UpdatedBy    int         `orm:"updated_by"    json:"updatedBy"`    // 更新者
-	UpdatedName  string      `orm:"updated_name"  json:"updatedName"`  // 更新人
-	UpdatedTime  *gtime.Time `orm:"updated_time"  json:"updatedTime"`  // 更新时间
-	DeletedTime  *gtime.Time `orm:"deleted_time"  json:"deletedTime"`  // 删除时间
+	Id            int         `orm:"id,primary"      json:"id"`            // 主键
+	Name          string      `orm:"name"            json:"name"`          // 名称
+	OrderTypeCode string      `orm:"order_type_code" json:"orderTypeCode"` // 工单类型编码
+	WorkflowType  string      `orm:"workflow_type"   json:"workflowType"`  // 审批类型
+	WorkflowCode  string      `orm:"workflow_code"   json:"workflowCode"`  // 关联流程
+	FormColumn    string      `orm:"form_column"     json:"formColumn"`    // 关联表单
+	Sort          int         `orm:"sort"            json:"sort"`          // 排序
+	Remark        string      `orm:"remark"          json:"remark"`        // 备注
+	CreatedBy     int         `orm:"created_by"      json:"createdBy"`     // 创建者
+	CreatedName   string      `orm:"created_name"    json:"createdName"`   // 创建人
+	CreatedTime   *gtime.Time `orm:"created_time"    json:"createdTime"`   // 创建时间
+	UpdatedBy     int         `orm:"updated_by"      json:"updatedBy"`     // 更新者
+	UpdatedName   string      `orm:"updated_name"    json:"updatedName"`   // 更新人
+	UpdatedTime   *gtime.Time `orm:"updated_time"    json:"updatedTime"`   // 更新时间
+	DeletedTime   *gtime.Time `orm:"deleted_time"    json:"deletedTime"`   // 删除时间
 }

+ 10 - 7
opms_parent/app/model/work/work_order_type.go

@@ -15,19 +15,22 @@ type WorkOrderType internal.WorkOrderType
 // Fill with you ideas below.
 
 type WorkOrderTypeSearchReq struct {
-	Name         string `json:"name"`         // 名称
-	WorkflowCode string `json:"workflowCode"` // 关联钉钉流程编号
+	Name          string `json:"name"`          // 名称
+	WorkflowCode  string `json:"workflowCode"`  // 关联钉钉流程编号
+	OrderTypeCode string `json:"orderTypeCode"` // 工单类型编码
 	request.PageReq
 }
 
 type WorkOrderTypeReq struct {
-	Name         string `json:"name" v:"required#名称不能为空"`               // 名称
-	WorkflowCode string `json:"workflowCode" v:"required#关联钉钉流程编号不能为空"` // 关联钉钉流程编号
-	Sort         int    `json:"sort"`                                   // 排序
-	Remark       string `json:"remark"`                                 // 备注
+	Name          string `json:"name" v:"required#名称不能为空"`               // 名称
+	OrderTypeCode string `json:"orderTypeCode"`                          // 工单类型编码
+	WorkflowCode  string `json:"workflowCode" v:"required#关联钉钉流程编号不能为空"` // 关联钉钉流程编号
+	Sort          int    `json:"sort"`                                   // 排序
+	Remark        string `json:"remark"`                                 // 备注
 }
 
 type UpdateWorkOrderTypeReq struct {
-	Id int `  json:"id"      v:"required#ID不能为空" `
+	Id            int    `  json:"id"      v:"required#ID不能为空" `
+	OrderTypeCode string `json:"orderTypeCode"` // 工单类型编码
 	WorkOrderTypeReq
 }

+ 621 - 327
opms_parent/app/service/proj/business.go

@@ -3,6 +3,8 @@ package proj
 import (
 	"context"
 	platDao "dashoo.cn/micro/app/dao/plat"
+	"dashoo.cn/micro/app/dao/work"
+	"encoding/json"
 	"github.com/gogf/gf/container/garray"
 	"os"
 
@@ -11,6 +13,7 @@ import (
 	projDao "dashoo.cn/micro/app/dao/proj"
 	contractModel "dashoo.cn/micro/app/model/contract"
 	model "dashoo.cn/micro/app/model/proj"
+	workmodel "dashoo.cn/micro/app/model/work"
 	workflowModel "dashoo.cn/micro/app/model/workflow"
 	workflowService "dashoo.cn/micro/app/service/workflow"
 	"dashoo.cn/opms_libary/plugin/dingtalk"
@@ -34,10 +37,11 @@ import (
 
 type businessService struct {
 	*service.ContextService
-	Dao        *projDao.ProjBusinessDao
-	ContactDao *projDao.ProjBusinessContactDao
-	FollowDao  *platDao.PlatFollowupDao
-	fileDao    *projDao.ProjBusinessFileDao
+	Dao         *projDao.ProjBusinessDao
+	ContactDao  *projDao.ProjBusinessContactDao
+	FollowDao   *platDao.PlatFollowupDao
+	fileDao     *projDao.ProjBusinessFileDao
+	WorkTypeDao *work.WorkOrderTypeDao
 }
 
 func NewBusinessService(ctx context.Context) (svc *businessService, err error) {
@@ -49,6 +53,7 @@ func NewBusinessService(ctx context.Context) (svc *businessService, err error) {
 	svc.ContactDao = projDao.NewProjBusinessContactDao(svc.Tenant)
 	svc.FollowDao = platDao.NewPlatFollowupDao(svc.Tenant)
 	svc.fileDao = projDao.NewProjBusinessFileDao(svc.Tenant)
+	svc.WorkTypeDao = work.NewWorkOrderTypeDao(svc.Tenant)
 	return svc, nil
 }
 
@@ -852,329 +857,330 @@ func (p *businessService) getBusDingUpgradeType(dbNboType, reqNboType string) st
 	return upgradeType
 }
 
-// BusUpgradeDingEvent 项目升级钉钉审批流调用
-func (p *businessService) BusUpgradeDingEvent(business *model.ProjBusiness, req *model.BusinessUpgradeReq, fileMap map[string]*multipart.FileHeader) (instanceId string, err error) {
-	upgradeType := p.getBusDingUpgradeType(business.NboType, req.NboType)
-	if upgradeType == "" {
-		return "", myerrors.TipsError("错误的升级类型")
-	}
-	productLineMap, err := service.GetDictDataTreeByType(p.Ctx, "sys_product_line")
-	if err != nil {
-		return "", err
-	}
-	productLine := gconv.String(productLineMap.Get(business.ProductLine))
-
-	dingProductList := make([][]*workflow.StartProcessInstanceRequestFormComponentValues, 0)
-	for _, item := range req.Products {
-		pInfo := make([]*workflow.StartProcessInstanceRequestFormComponentValues, 0)
-		pInfo = append(pInfo, &workflow.StartProcessInstanceRequestFormComponentValues{
-			Id:    utils.String("TextField_8P2W917Q5I40"),
-			Name:  utils.String("产品编码"),
-			Value: utils.String(item.ProdCode),
-		})
-		pInfo = append(pInfo, &workflow.StartProcessInstanceRequestFormComponentValues{
-			Id:    utils.String("TextField_1W2HGNQFLLA80"),
-			Name:  utils.String("产品名称"),
-			Value: utils.String(item.ProdName),
-		})
-		pInfo = append(pInfo, &workflow.StartProcessInstanceRequestFormComponentValues{
-			Id:    utils.String("TextField_1OPT3MZL76GW0"),
-			Name:  utils.String("产品类别"),
-			Value: utils.String(gconv.String(productLineMap.Get(item.ProdClass))),
-		})
-		pInfo = append(pInfo, &workflow.StartProcessInstanceRequestFormComponentValues{
-			Id:    utils.String("TextField_O405QBZMPW00"),
-			Name:  utils.String("产品单价"),
-			Value: utils.String(gconv.String(item.ProdPrice)),
-		})
-		pInfo = append(pInfo, &workflow.StartProcessInstanceRequestFormComponentValues{
-			Id:    utils.String("TextField_23P54AZUW4SG0"),
-			Name:  utils.String("数量"),
-			Value: utils.String(gconv.String(item.ProdNum)),
-		})
-		dingProductList = append(dingProductList, pInfo)
-	}
-
-	// 审批流
-	workflowSrv, _ := workflowService.NewFlowService(p.Ctx)
-	// OMS项目升级 审批
-	var dingReq *workflow.StartProcessInstanceRequest
-	bizCode := business.NboCode + ":" + strconv.Itoa(business.Id)
-	switch req.NboType {
-	case StatusC:
-		business.ApproType = BusinessUpgradeCRequestProcessCode
-		dingReq = &workflow.StartProcessInstanceRequest{
-			ProcessCode: &business.ApproType,
-			FormComponentValues: []*workflow.StartProcessInstanceRequestFormComponentValues{
-				{
-					Id:    utils.String("TextField-K2AD4O5B"),
-					Name:  utils.String("项目编码"),
-					Value: utils.String(business.NboCode),
-				},
-				{
-					Id:    utils.String("TextField_BDLSECETVSG0"),
-					Name:  utils.String("项目名称"),
-					Value: utils.String(business.NboName),
-				},
-				{
-					Id:    utils.String("DDSelectField_1MJU37HGJX4W0"),
-					Name:  utils.String("产品线"),
-					Value: utils.String(productLine),
-				},
-				{
-					Id:    utils.String("DDSelectField_VSA3U380ZK00"),
-					Name:  utils.String("升级类型"),
-					Value: utils.String(upgradeType),
-				},
-				{
-					Id:    utils.String("TextField_1J9BJMOZ18F40"),
-					Name:  utils.String("客户名称"),
-					Value: utils.String(business.CustName),
-				},
-				{
-					Id:    utils.String("TextField_AEUWH63LJ0O0"),
-					Name:  utils.String("销售工程师"),
-					Value: utils.String(business.SaleName),
-				},
-				{
-					Id:    utils.String("TextareaField_1LO81IKHH91C0"),
-					Name:  utils.String("转化原因"),
-					Value: utils.String(req.ProjConversionReason),
-				},
-			},
-		}
-
-	case StatusB:
-		quotationFile := make([]contractModel.DingFileInfo, 0)
-		if len(fileMap) > 0 {
-			for k, files := range fileMap {
-				// 报价单
-				if k == "quotationFile" {
-					if quotationFile, err = p.txCreateBusinessDingTalkFile(business.Id, upgradeType, k, files); err != nil {
-						return "", err
-					}
-				}
-			}
-		}
-		if len(quotationFile) == 0 {
-			return "", myerrors.TipsError("请上传报价单文件")
-		}
-		business.ApproType = BusinessUpgradeBRequestProcessCode
-		dingReq = &workflow.StartProcessInstanceRequest{
-			ProcessCode: &business.ApproType,
-			FormComponentValues: []*workflow.StartProcessInstanceRequestFormComponentValues{
-				{
-					Id:    utils.String("TextField-K2AD4O5B"),
-					Name:  utils.String("项目编码"),
-					Value: utils.String(business.NboCode),
-				},
-				{
-					Id:    utils.String("TextField_BDLSECETVSG0"),
-					Name:  utils.String("项目名称"),
-					Value: utils.String(business.NboName),
-				},
-				{
-					Id:    utils.String("DDSelectField_213JKZA1OUO00"),
-					Name:  utils.String("产品线"),
-					Value: utils.String(productLine),
-				},
-				{
-					Id:    utils.String("DDSelectField_VSA3U380ZK00"),
-					Name:  utils.String("升级类型"),
-					Value: utils.String(upgradeType),
-				},
-				{
-					Id:    utils.String("TextField_1J9BJMOZ18F40"),
-					Name:  utils.String("客户名称"),
-					Value: utils.String(business.CustName),
-				},
-				{
-					Id:    utils.String("NumberField_1F88MCD0W8KG0"),
-					Name:  utils.String("项目预算"),
-					Value: utils.String(gconv.String(req.NboBudget)),
-				},
-				{
-					Id:    utils.String("TextField_1PWK6WHMGITC0"),
-					Name:  utils.String("渠道销售人员"),
-					Value: utils.String(req.DealerSalesName),
-				},
-				{
-					Id:    utils.String("TextField_M06MZK20POG0"),
-					Name:  utils.String("渠道销售电话/微信"),
-					Value: utils.String(req.DealerSalesContact),
-				},
-				{
-					Id:    utils.String("TextField_GL59OGH2Z1S0"),
-					Name:  utils.String("预计出货金额"),
-					Value: utils.String(gconv.String(business.EstTransPrice)),
-				},
-				{
-					Id:    utils.String("TableField_1CGSRAWT8YG0"),
-					Name:  utils.String("产品列表"),
-					Value: utils.String(gconv.String(dingProductList)),
-				},
-				{
-					Id:    utils.String("TextField_AEUWH63LJ0O0"),
-					Name:  utils.String("销售工程师"),
-					Value: utils.String(business.SaleName),
-				},
-				{
-					Id:    utils.String("DDAttachment_KZPWZJS9GHO0"),
-					Name:  utils.String("上传报价单"),
-					Value: utils.String(gconv.String(quotationFile)),
-				},
-				{
-					Id:    utils.String("TextareaField_1GEL8JJL3H5S0"),
-					Name:  utils.String("备注"),
-					Value: utils.String(req.Remark),
-				},
-			},
-		}
-
-	case StatusA:
-		var dashooParamFile []contractModel.DingFileInfo
-		var quotationFile []contractModel.DingFileInfo
-		if len(fileMap) > 0 {
-			for k, files := range fileMap {
-				// 报价单
-				if k == "quotationFile" {
-					if quotationFile, err = p.txCreateBusinessDingTalkFile(business.Id, upgradeType, k, files); err != nil {
-						return "", err
-					}
-				}
-				// 大数参数文件
-				if k == "dashooParamFile" {
-					if dashooParamFile, err = p.txCreateBusinessDingTalkFile(business.Id, upgradeType, k, files); err != nil {
-						return "", err
-					}
-				}
-			}
-		}
-		if strings.HasPrefix(req.QuotationFile, "dingtalk") {
-			arr := strings.Split(req.QuotationFile, ":")
-			quotationFile = append(quotationFile, contractModel.DingFileInfo{
-				SpaceId:  arr[1],
-				FileId:   arr[2],
-				FileName: fmt.Sprintf("%v报价单", business.NboName),
-				FileSize: 10,
-				FileType: "",
-			})
-		}
-		if len(quotationFile) == 0 {
-			return "", myerrors.TipsError("请上传报价单文件")
-		}
-		business.ApproType = BusinessUpgradeARequestProcessCode
-		dingReq = &workflow.StartProcessInstanceRequest{
-			ProcessCode: &business.ApproType,
-			FormComponentValues: []*workflow.StartProcessInstanceRequestFormComponentValues{
-				{
-					Id:    utils.String("TextField-K2AD4O5B"),
-					Name:  utils.String("项目编码"),
-					Value: utils.String(business.NboCode),
-				},
-				{
-					Id:    utils.String("TextField_BDLSECETVSG0"),
-					Name:  utils.String("项目名称"),
-					Value: utils.String(business.NboName),
-				},
-				{
-					Id:    utils.String("DDSelectField_L4CSUVLU1NK"),
-					Name:  utils.String("产品线"),
-					Value: utils.String(productLine),
-				},
-				{
-					Id:    utils.String("DDSelectField_VSA3U380ZK00"),
-					Name:  utils.String("升级类型"),
-					Value: utils.String(upgradeType),
-				},
-				{
-					Id:    utils.String("TextField_1J9BJMOZ18F40"),
-					Name:  utils.String("客户名称"),
-					Value: utils.String(business.CustName),
-				},
-				{
-					Id:    utils.String("DDSelectField_21ASEWDIB3MO0"),
-					Name:  utils.String("采购方式"),
-					Value: utils.String(gconv.String(purchasingWayType[req.PurchasingWay])),
-				},
-				{
-					Id:    utils.String("TextField_3AIYCSEQLQC0"),
-					Name:  utils.String("资金来源"),
-					Value: utils.String(req.CapitalSource),
-				},
-				{
-					Id:    utils.String("DDDateField_1FW1QZQYBZVK0"),
-					Name:  utils.String("计划采购时间"),
-					Value: utils.String(gconv.String(req.PlanPurchaseTime.Format("Y-m-d"))),
-				},
-				{
-					Id:    utils.String("TextField_1PWK6WHMGITC0"),
-					Name:  utils.String("客户决策人"),
-					Value: utils.String(req.MakerName),
-				},
-				{
-					Id:    utils.String("TextField_16RIJRRF8B340"),
-					Name:  utils.String("客户决策部门"),
-					Value: utils.String(req.MakerDept),
-				},
-				{
-					Id:    utils.String("TextField_7EE0LTUVUSK0"),
-					Name:  utils.String("客户联系人"),
-					Value: utils.String(req.ContactName),
-				},
-				{
-					Id:    utils.String("TextField_E8TFCZUBV940"),
-					Name:  utils.String("客户联系人电话/微信"),
-					Value: utils.String(req.ContactTelephone),
-				},
-				{
-					Id:    utils.String("DDSelectField_5R11VVM6GI00"),
-					Name:  utils.String("是否我司参数"),
-					Value: utils.String(gconv.String(yesOrNoType[req.IsAdoptDashoo])),
-				},
-				{
-					Id:    utils.String("DDAttachment_11Q7DBRKE6HC0"),
-					Name:  utils.String("附件"),
-					Value: utils.String(gconv.String(dashooParamFile)),
-				},
-				{
-					Id:    utils.String("TextField_FJI7GL9E8W80"),
-					Name:  utils.String("竞争公司"),
-					Value: utils.String(req.Competitor),
-				},
-				{
-					Id:    utils.String("TextField_1NC9MEUBDBR40"),
-					Name:  utils.String("客户倾向厂家"),
-					Value: utils.String(req.CustomerIntentionFactory),
-				},
-				{
-					Id:    utils.String("TextField_AEUWH63LJ0O0"),
-					Name:  utils.String("销售工程师"),
-					Value: utils.String(business.SaleName),
-				},
-				{
-					Id:    utils.String("DDAttachment_19Y01ZRBFWXS0"),
-					Name:  utils.String("上传报价单"),
-					Value: utils.String(gconv.String(quotationFile)),
-				},
-				{
-					Id:    utils.String("TextareaField_1GEL8JJL3H5S0"),
-					Name:  utils.String("备注"),
-					Value: utils.String(req.Remark),
-				},
-			},
-		}
-
-	default:
-		return "", nil
-	}
-	instanceId, err = workflowSrv.StartProcessInstance(bizCode, workflowModel.ProjectUpGrade, "", dingReq)
-	if err != nil {
-		g.Log().Error(err)
-		return "", err
-	}
-	return instanceId, nil
-}
+//// BusUpgradeDingEvent 项目升级钉钉审批流调用
+//func (p *businessService) BusUpgradeDingEvent(business *model.ProjBusiness, req *model.BusinessUpgradeReq, fileMap map[string]*multipart.FileHeader) (instanceId string, err error) {
+//	upgradeType := p.getBusDingUpgradeType(business.NboType, req.NboType)
+//	if upgradeType == "" {
+//		return "", myerrors.TipsError("错误的升级类型")
+//	}
+//	productLineMap, err := service.GetDictDataTreeByType(p.Ctx, "sys_product_line")
+//	if err != nil {
+//		return "", err
+//	}
+//	productLine := gconv.String(productLineMap.Get(business.ProductLine))
+//
+//	dingProductList := make([][]*workflow.StartProcessInstanceRequestFormComponentValues, 0)
+//	for _, item := range req.Products {
+//		pInfo := make([]*workflow.StartProcessInstanceRequestFormComponentValues, 0)
+//		pInfo = append(pInfo, &workflow.StartProcessInstanceRequestFormComponentValues{
+//			Id:    utils.String("TextField_8P2W917Q5I40"),
+//			Name:  utils.String("产品编码"),
+//			Value: utils.String(item.ProdCode),
+//		})
+//		pInfo = append(pInfo, &workflow.StartProcessInstanceRequestFormComponentValues{
+//			Id:    utils.String("TextField_1W2HGNQFLLA80"),
+//			Name:  utils.String("产品名称"),
+//			Value: utils.String(item.ProdName),
+//		})
+//		pInfo = append(pInfo, &workflow.StartProcessInstanceRequestFormComponentValues{
+//			Id:    utils.String("TextField_1OPT3MZL76GW0"),
+//			Name:  utils.String("产品类别"),
+//			Value: utils.String(gconv.String(productLineMap.Get(item.ProdClass))),
+//		})
+//		pInfo = append(pInfo, &workflow.StartProcessInstanceRequestFormComponentValues{
+//			Id:    utils.String("TextField_O405QBZMPW00"),
+//			Name:  utils.String("产品单价"),
+//			Value: utils.String(gconv.String(item.ProdPrice)),
+//		})
+//		pInfo = append(pInfo, &workflow.StartProcessInstanceRequestFormComponentValues{
+//			Id:    utils.String("TextField_23P54AZUW4SG0"),
+//			Name:  utils.String("数量"),
+//			Value: utils.String(gconv.String(item.ProdNum)),
+//		})
+//		dingProductList = append(dingProductList, pInfo)
+//	}
+//
+//	// 审批流
+//	workflowSrv, _ := workflowService.NewFlowService(p.Ctx)
+//	// OMS项目升级 审批
+//	var dingReq *workflow.StartProcessInstanceRequest
+//	bizCode := business.NboCode + ":" + strconv.Itoa(business.Id)
+//
+//	switch req.NboType {
+//	case StatusC:
+//		business.ApproType = BusinessUpgradeCRequestProcessCode
+//		dingReq = &workflow.StartProcessInstanceRequest{
+//			ProcessCode: &business.ApproType,
+//			FormComponentValues: []*workflow.StartProcessInstanceRequestFormComponentValues{
+//				{
+//					Id:    utils.String("TextField-K2AD4O5B"),
+//					Name:  utils.String("项目编码"),
+//					Value: utils.String(business.NboCode),
+//				},
+//				{
+//					Id:    utils.String("TextField_BDLSECETVSG0"),
+//					Name:  utils.String("项目名称"),
+//					Value: utils.String(business.NboName),
+//				},
+//				{
+//					Id:    utils.String("DDSelectField_1MJU37HGJX4W0"),
+//					Name:  utils.String("产品线"),
+//					Value: utils.String(productLine),
+//				},
+//				{
+//					Id:    utils.String("DDSelectField_VSA3U380ZK00"),
+//					Name:  utils.String("升级类型"),
+//					Value: utils.String(upgradeType),
+//				},
+//				{
+//					Id:    utils.String("TextField_1J9BJMOZ18F40"),
+//					Name:  utils.String("客户名称"),
+//					Value: utils.String(business.CustName),
+//				},
+//				{
+//					Id:    utils.String("TextField_AEUWH63LJ0O0"),
+//					Name:  utils.String("销售工程师"),
+//					Value: utils.String(business.SaleName),
+//				},
+//				{
+//					Id:    utils.String("TextareaField_1LO81IKHH91C0"),
+//					Name:  utils.String("转化原因"),
+//					Value: utils.String(req.ProjConversionReason),
+//				},
+//			},
+//		}
+//
+//	case StatusB:
+//		quotationFile := make([]contractModel.DingFileInfo, 0)
+//		if len(fileMap) > 0 {
+//			for k, files := range fileMap {
+//				// 报价单
+//				if k == "quotationFile" {
+//					if quotationFile, err = p.txCreateBusinessDingTalkFile(business.Id, upgradeType, k, files); err != nil {
+//						return "", err
+//					}
+//				}
+//			}
+//		}
+//		if len(quotationFile) == 0 {
+//			return "", myerrors.TipsError("请上传报价单文件")
+//		}
+//		business.ApproType = BusinessUpgradeBRequestProcessCode
+//		dingReq = &workflow.StartProcessInstanceRequest{
+//			ProcessCode: &business.ApproType,
+//			FormComponentValues: []*workflow.StartProcessInstanceRequestFormComponentValues{
+//				{
+//					Id:    utils.String("TextField-K2AD4O5B"),
+//					Name:  utils.String("项目编码"),
+//					Value: utils.String(business.NboCode),
+//				},
+//				{
+//					Id:    utils.String("TextField_BDLSECETVSG0"),
+//					Name:  utils.String("项目名称"),
+//					Value: utils.String(business.NboName),
+//				},
+//				{
+//					Id:    utils.String("DDSelectField_213JKZA1OUO00"),
+//					Name:  utils.String("产品线"),
+//					Value: utils.String(productLine),
+//				},
+//				{
+//					Id:    utils.String("DDSelectField_VSA3U380ZK00"),
+//					Name:  utils.String("升级类型"),
+//					Value: utils.String(upgradeType),
+//				},
+//				{
+//					Id:    utils.String("TextField_1J9BJMOZ18F40"),
+//					Name:  utils.String("客户名称"),
+//					Value: utils.String(business.CustName),
+//				},
+//				{
+//					Id:    utils.String("NumberField_1F88MCD0W8KG0"),
+//					Name:  utils.String("项目预算"),
+//					Value: utils.String(gconv.String(req.NboBudget)),
+//				},
+//				{
+//					Id:    utils.String("TextField_1PWK6WHMGITC0"),
+//					Name:  utils.String("渠道销售人员"),
+//					Value: utils.String(req.DealerSalesName),
+//				},
+//				{
+//					Id:    utils.String("TextField_M06MZK20POG0"),
+//					Name:  utils.String("渠道销售电话/微信"),
+//					Value: utils.String(req.DealerSalesContact),
+//				},
+//				{
+//					Id:    utils.String("TextField_GL59OGH2Z1S0"),
+//					Name:  utils.String("预计出货金额"),
+//					Value: utils.String(gconv.String(business.EstTransPrice)),
+//				},
+//				{
+//					Id:    utils.String("TableField_1CGSRAWT8YG0"),
+//					Name:  utils.String("产品列表"),
+//					Value: utils.String(gconv.String(dingProductList)),
+//				},
+//				{
+//					Id:    utils.String("TextField_AEUWH63LJ0O0"),
+//					Name:  utils.String("销售工程师"),
+//					Value: utils.String(business.SaleName),
+//				},
+//				{
+//					Id:    utils.String("DDAttachment_KZPWZJS9GHO0"),
+//					Name:  utils.String("上传报价单"),
+//					Value: utils.String(gconv.String(quotationFile)),
+//				},
+//				{
+//					Id:    utils.String("TextareaField_1GEL8JJL3H5S0"),
+//					Name:  utils.String("备注"),
+//					Value: utils.String(req.Remark),
+//				},
+//			},
+//		}
+//
+//	case StatusA:
+//		var dashooParamFile []contractModel.DingFileInfo
+//		var quotationFile []contractModel.DingFileInfo
+//		if len(fileMap) > 0 {
+//			for k, files := range fileMap {
+//				// 报价单
+//				if k == "quotationFile" {
+//					if quotationFile, err = p.txCreateBusinessDingTalkFile(business.Id, upgradeType, k, files); err != nil {
+//						return "", err
+//					}
+//				}
+//				// 大数参数文件
+//				if k == "dashooParamFile" {
+//					if dashooParamFile, err = p.txCreateBusinessDingTalkFile(business.Id, upgradeType, k, files); err != nil {
+//						return "", err
+//					}
+//				}
+//			}
+//		}
+//		if strings.HasPrefix(req.QuotationFile, "dingtalk") {
+//			arr := strings.Split(req.QuotationFile, ":")
+//			quotationFile = append(quotationFile, contractModel.DingFileInfo{
+//				SpaceId:  arr[1],
+//				FileId:   arr[2],
+//				FileName: fmt.Sprintf("%v报价单", business.NboName),
+//				FileSize: 10,
+//				FileType: "",
+//			})
+//		}
+//		if len(quotationFile) == 0 {
+//			return "", myerrors.TipsError("请上传报价单文件")
+//		}
+//		business.ApproType = BusinessUpgradeARequestProcessCode
+//		dingReq = &workflow.StartProcessInstanceRequest{
+//			ProcessCode: &business.ApproType,
+//			FormComponentValues: []*workflow.StartProcessInstanceRequestFormComponentValues{
+//				{
+//					Id:    utils.String("TextField-K2AD4O5B"),
+//					Name:  utils.String("项目编码"),
+//					Value: utils.String(business.NboCode),
+//				},
+//				{
+//					Id:    utils.String("TextField_BDLSECETVSG0"),
+//					Name:  utils.String("项目名称"),
+//					Value: utils.String(business.NboName),
+//				},
+//				{
+//					Id:    utils.String("DDSelectField_L4CSUVLU1NK"),
+//					Name:  utils.String("产品线"),
+//					Value: utils.String(productLine),
+//				},
+//				{
+//					Id:    utils.String("DDSelectField_VSA3U380ZK00"),
+//					Name:  utils.String("升级类型"),
+//					Value: utils.String(upgradeType),
+//				},
+//				{
+//					Id:    utils.String("TextField_1J9BJMOZ18F40"),
+//					Name:  utils.String("客户名称"),
+//					Value: utils.String(business.CustName),
+//				},
+//				{
+//					Id:    utils.String("DDSelectField_21ASEWDIB3MO0"),
+//					Name:  utils.String("采购方式"),
+//					Value: utils.String(gconv.String(purchasingWayType[req.PurchasingWay])),
+//				},
+//				{
+//					Id:    utils.String("TextField_3AIYCSEQLQC0"),
+//					Name:  utils.String("资金来源"),
+//					Value: utils.String(req.CapitalSource),
+//				},
+//				{
+//					Id:    utils.String("DDDateField_1FW1QZQYBZVK0"),
+//					Name:  utils.String("计划采购时间"),
+//					Value: utils.String(gconv.String(req.PlanPurchaseTime.Format("Y-m-d"))),
+//				},
+//				{
+//					Id:    utils.String("TextField_1PWK6WHMGITC0"),
+//					Name:  utils.String("客户决策人"),
+//					Value: utils.String(req.MakerName),
+//				},
+//				{
+//					Id:    utils.String("TextField_16RIJRRF8B340"),
+//					Name:  utils.String("客户决策部门"),
+//					Value: utils.String(req.MakerDept),
+//				},
+//				{
+//					Id:    utils.String("TextField_7EE0LTUVUSK0"),
+//					Name:  utils.String("客户联系人"),
+//					Value: utils.String(req.ContactName),
+//				},
+//				{
+//					Id:    utils.String("TextField_E8TFCZUBV940"),
+//					Name:  utils.String("客户联系人电话/微信"),
+//					Value: utils.String(req.ContactTelephone),
+//				},
+//				{
+//					Id:    utils.String("DDSelectField_5R11VVM6GI00"),
+//					Name:  utils.String("是否我司参数"),
+//					Value: utils.String(gconv.String(yesOrNoType[req.IsAdoptDashoo])),
+//				},
+//				{
+//					Id:    utils.String("DDAttachment_11Q7DBRKE6HC0"),
+//					Name:  utils.String("附件"),
+//					Value: utils.String(gconv.String(dashooParamFile)),
+//				},
+//				{
+//					Id:    utils.String("TextField_FJI7GL9E8W80"),
+//					Name:  utils.String("竞争公司"),
+//					Value: utils.String(req.Competitor),
+//				},
+//				{
+//					Id:    utils.String("TextField_1NC9MEUBDBR40"),
+//					Name:  utils.String("客户倾向厂家"),
+//					Value: utils.String(req.CustomerIntentionFactory),
+//				},
+//				{
+//					Id:    utils.String("TextField_AEUWH63LJ0O0"),
+//					Name:  utils.String("销售工程师"),
+//					Value: utils.String(business.SaleName),
+//				},
+//				{
+//					Id:    utils.String("DDAttachment_19Y01ZRBFWXS0"),
+//					Name:  utils.String("上传报价单"),
+//					Value: utils.String(gconv.String(quotationFile)),
+//				},
+//				{
+//					Id:    utils.String("TextareaField_1GEL8JJL3H5S0"),
+//					Name:  utils.String("备注"),
+//					Value: utils.String(req.Remark),
+//				},
+//			},
+//		}
+//
+//	default:
+//		return "", nil
+//	}
+//	instanceId, err = workflowSrv.StartProcessInstance(bizCode, workflowModel.ProjectUpGrade, "", dingReq)
+//	if err != nil {
+//		g.Log().Error(err)
+//		return "", err
+//	}
+//	return instanceId, nil
+//}
 
 // 项目上传文件至钉钉
 func (p *businessService) txCreateBusinessDingTalkFile(businessId int, upgradeType, fileType string, file *multipart.FileHeader) ([]contractModel.DingFileInfo, error) {
@@ -1735,3 +1741,291 @@ func (p *businessService) checkDingTalkNotify(flow *workflowModel.PlatWorkflow,
 	}
 	return business, nil
 }
+
+// BusUpgradeDingEvent 项目升级钉钉审批流调用
+func (p *businessService) BusUpgradeDingEvent(business *model.ProjBusiness, req *model.BusinessUpgradeReq, fileMap map[string]*multipart.FileHeader) (instanceId string, err error) {
+	upgradeType := p.getBusDingUpgradeType(business.NboType, req.NboType)
+	if upgradeType == "" {
+		return "", myerrors.TipsError("错误的升级类型")
+	}
+	productLineMap, err := service.GetDictDataTreeByType(p.Ctx, "sys_product_line")
+	if err != nil {
+		return "", err
+	}
+	productLine := gconv.String(productLineMap.Get(business.ProductLine))
+
+	dingProductList := make([][]*workflow.StartProcessInstanceRequestFormComponentValues, 0)
+	for _, item := range req.Products {
+		pInfo := make([]*workflow.StartProcessInstanceRequestFormComponentValues, 0)
+
+		productOrderType := workmodel.WorkOrderType{}
+		err = p.WorkTypeDao.Where("work_order_type =?", "").Scan(&productOrderType)
+		if err != nil {
+			return "", err
+		}
+
+		// 转换为map[string]interface{}
+		var productFormColumnMap map[string]interface{}
+		err = json.Unmarshal([]byte(productOrderType.FormColumn), &productFormColumnMap)
+		if err != nil {
+			fmt.Println("Error:", err)
+			return
+		}
+		items := productFormColumnMap["items"].([]interface{})
+		for _, columnItem := range items {
+			data := columnItem.(map[string]interface{})
+			dataMap := data["props"].(map[string]string)
+			name := dataMap["label"]
+			values := &workflow.StartProcessInstanceRequestFormComponentValues{
+				Id:   utils.String(dataMap["id"]),
+				Name: utils.String(name),
+			}
+			switch name {
+			case "产品编码":
+				values.Value = utils.String(item.ProdCode)
+			case "产品名称":
+				values.Value = utils.String(item.ProdName)
+			case "产品类别":
+				values.Value = utils.String(gconv.String(productLineMap.Get(item.ProdClass)))
+			case "产品单价":
+				values.Value = utils.String(gconv.String(item.ProdPrice))
+			case "数量":
+				values.Value = utils.String(gconv.String(item.ProdNum))
+
+			}
+			pInfo = append(pInfo, values)
+		}
+		dingProductList = append(dingProductList, pInfo)
+	}
+
+	// 审批流
+	workflowSrv, _ := workflowService.NewFlowService(p.Ctx)
+	// OMS项目升级 审批
+	var dingReq *workflow.StartProcessInstanceRequest
+	bizCode := business.NboCode + ":" + strconv.Itoa(business.Id)
+
+	orderType := workmodel.WorkOrderType{}
+	err = p.WorkTypeDao.Where("work_order_type =?", req.NboType).Scan(&orderType)
+	if err != nil {
+		return "", err
+	}
+
+	// 转换为map[string]interface{}
+	var formColumnMap map[string]interface{}
+	err = json.Unmarshal([]byte(orderType.FormColumn), &formColumnMap)
+	if err != nil {
+		fmt.Println("Error:", err)
+		return
+	}
+	dingReq = &workflow.StartProcessInstanceRequest{}
+	formComponentValues := make([]*workflow.StartProcessInstanceRequestFormComponentValues, 0)
+	items := formColumnMap["items"].([]interface{})
+
+	switch req.NboType {
+	case StatusC:
+		business.ApproType = BusinessUpgradeCRequestProcessCode
+		dingReq = &workflow.StartProcessInstanceRequest{
+			ProcessCode: &business.ApproType,
+		}
+		for _, item := range items {
+			data := item.(map[string]interface{})
+			dataMap := data["props"].(map[string]string)
+			name := dataMap["label"]
+			values := workflow.StartProcessInstanceRequestFormComponentValues{
+				Id:   utils.String(dataMap["id"]),
+				Name: utils.String(name),
+			}
+			switch name {
+			case "项目编码":
+				values.Value = utils.String(business.NboCode)
+			case "项目名称":
+				values.Value = utils.String(business.NboName)
+			case "产品线":
+				values.Value = utils.String(productLine)
+			case "升级类型":
+				values.Value = utils.String(upgradeType)
+			case "客户名称":
+				values.Value = utils.String(business.CustName)
+			case "销售工程师":
+				values.Value = utils.String(business.SaleName)
+			case "转化原因":
+				values.Value = utils.String(req.ProjConversionReason)
+
+			}
+			formComponentValues = append(formComponentValues, &values)
+		}
+
+	case StatusB:
+		quotationFile := make([]contractModel.DingFileInfo, 0)
+		if len(fileMap) > 0 {
+			for k, files := range fileMap {
+				// 报价单
+				if k == "quotationFile" {
+					if quotationFile, err = p.txCreateBusinessDingTalkFile(business.Id, upgradeType, k, files); err != nil {
+						return "", err
+					}
+				}
+			}
+		}
+		if len(quotationFile) == 0 {
+			return "", myerrors.TipsError("请上传报价单文件")
+		}
+		business.ApproType = BusinessUpgradeBRequestProcessCode
+		dingReq = &workflow.StartProcessInstanceRequest{
+			ProcessCode: &business.ApproType,
+		}
+		for _, item := range items {
+			data := item.(map[string]interface{})
+			dataMap := data["props"].(map[string]string)
+			name := dataMap["label"]
+			values := workflow.StartProcessInstanceRequestFormComponentValues{
+				Id:   utils.String(dataMap["id"]),
+				Name: utils.String(name),
+			}
+			switch name {
+			case "项目编码":
+				values.Value = utils.String(business.NboCode)
+			case "项目名称":
+				values.Value = utils.String(business.NboName)
+			case "产品线":
+				values.Value = utils.String(productLine)
+			case "升级类型":
+				values.Value = utils.String(upgradeType)
+			case "客户名称":
+				values.Value = utils.String(business.CustName)
+			case "项目预算":
+				values.Value = utils.String(gconv.String(req.NboBudget))
+			case "渠道销售人员":
+				values.Value = utils.String(req.DealerSalesName)
+			case "渠道销售电话/微信":
+				values.Value = utils.String(req.DealerSalesContact)
+			case "预计出货金额":
+				values.Value = utils.String(gconv.String(business.EstTransPrice))
+			case "产品列表":
+				values.Value = utils.String(gconv.String(dingProductList))
+			case "销售工程师":
+				values.Value = utils.String(business.SaleName)
+			case "上传报价单":
+				values.Value = utils.String(gconv.String(quotationFile))
+			case "备注":
+				values.Value = utils.String(req.Remark)
+
+			}
+			formComponentValues = append(formComponentValues, &values)
+		}
+		dingReq.FormComponentValues = formComponentValues
+
+	case StatusA:
+		var dashooParamFile []contractModel.DingFileInfo
+		var quotationFile []contractModel.DingFileInfo
+		if len(fileMap) > 0 {
+			for k, files := range fileMap {
+				// 报价单
+				if k == "quotationFile" {
+					if quotationFile, err = p.txCreateBusinessDingTalkFile(business.Id, upgradeType, k, files); err != nil {
+						return "", err
+					}
+				}
+				// 大数参数文件
+				if k == "dashooParamFile" {
+					if dashooParamFile, err = p.txCreateBusinessDingTalkFile(business.Id, upgradeType, k, files); err != nil {
+						return "", err
+					}
+				}
+			}
+		}
+		if strings.HasPrefix(req.QuotationFile, "dingtalk") {
+			arr := strings.Split(req.QuotationFile, ":")
+			quotationFile = append(quotationFile, contractModel.DingFileInfo{
+				SpaceId:  arr[1],
+				FileId:   arr[2],
+				FileName: fmt.Sprintf("%v报价单", business.NboName),
+				FileSize: 10,
+				FileType: "",
+			})
+		}
+		if len(quotationFile) == 0 {
+			return "", myerrors.TipsError("请上传报价单文件")
+		}
+		business.ApproType = BusinessUpgradeARequestProcessCode
+		dingReq = &workflow.StartProcessInstanceRequest{
+			ProcessCode: &business.ApproType,
+		}
+		for _, item := range items {
+			data := item.(map[string]interface{})
+			dataMap := data["props"].(map[string]string)
+			name := dataMap["label"]
+			values := workflow.StartProcessInstanceRequestFormComponentValues{
+				Id:   utils.String(dataMap["id"]),
+				Name: utils.String(name),
+			}
+			switch name {
+			case "项目编码":
+				values.Value = utils.String(business.NboCode)
+			case "项目名称":
+				values.Value = utils.String(business.NboName)
+			case "产品线":
+				values.Value = utils.String(productLine)
+			case "升级类型":
+				values.Value = utils.String(upgradeType)
+			case "客户名称":
+				values.Value = utils.String(business.CustName)
+			case "采购方式":
+				values.Value = utils.String(gconv.String(purchasingWayType[req.PurchasingWay]))
+			case "资金来源":
+				values.Value = utils.String(req.CapitalSource)
+			case "计划采购时间":
+				values.Value = utils.String(gconv.String(req.PlanPurchaseTime.Format("Y-m-d")))
+			case "客户决策人":
+				values.Value = utils.String(req.MakerName)
+			case "客户决策部门":
+				values.Value = utils.String(req.MakerDept)
+			case "客户联系人":
+				values.Value = utils.String(req.ContactName)
+			case "客户联系人电话/微信":
+				values.Value = utils.String(req.ContactTelephone)
+			case "是否我司参数":
+				values.Value = utils.String(gconv.String(yesOrNoType[req.IsAdoptDashoo]))
+			case "附件":
+				values.Value = utils.String(gconv.String(dashooParamFile))
+			case "竞争公司":
+				values.Value = utils.String(req.Competitor)
+			case "客户倾向厂家":
+				values.Value = utils.String(req.CustomerIntentionFactory)
+			case "销售工程师":
+				values.Value = utils.String(business.SaleName)
+			case "上传报价单":
+				values.Value = utils.String(gconv.String(quotationFile))
+			case "备注":
+				values.Value = utils.String(req.Remark)
+			}
+			formComponentValues = append(formComponentValues, &values)
+		}
+		dingReq.FormComponentValues = formComponentValues
+
+	default:
+		return "", nil
+	}
+	for _, item := range items {
+		data := item.(map[string]interface{})
+		dataMap := data["props"].(map[string]string)
+		name := utils.String(dataMap["label"])
+		values := workflow.StartProcessInstanceRequestFormComponentValues{
+			Id:   utils.String(dataMap["id"]),
+			Name: name,
+		}
+		values.Value = utils.String("")
+		formComponentValues = append(formComponentValues, &values)
+	}
+	dingReq.FormComponentValues = formComponentValues
+
+	if orderType.WorkflowType == "10" {
+		instanceId, err = workflowSrv.StartProcessInstance(bizCode, workflowModel.ProjectUpGrade, "", dingReq)
+		if err != nil {
+			g.Log().Error(err)
+			return "", err
+		}
+	}
+
+	return instanceId, nil
+}