Browse Source

feature(项目):
1、项目升级审批流更改
2、数值指标统计去重

ZZH-wl 2 years ago
parent
commit
42b2aee09f

+ 18 - 17
opms_parent/app/model/proj/proj_business.go

@@ -97,27 +97,28 @@ type BusinessUpgradeReq struct {
 	Id                      int         `json:"id"                      v:"required# id不能为空"`                     // 主键
 	NboType                 string      `json:"nboType"                 v:"required|in:10,20,30#项目级别不能为空|项目级别错误"` // 项目级别
 	NboBudget               float64     `json:"nboBudget"               v:"required#项目预算不能为空"`                    // 项目预算
-	DistributorId           int         `json:"distributorId"           v:"required#经销商/代理商不能为空"`                 // 经销商/代理商ID
-	DistributorName         string      `json:"distributorName"         v:"required#经销商/代理商名称不能为空"`               // 经销商/代理商名称
+	DistributorId           int         `json:"distributorId"           `                                         // 经销商/代理商ID
+	DistributorName         string      `json:"distributorName"         `                                         // 经销商/代理商名称
 	TechnicalSupportName    string      `json:"technicalSupportName"    v:"required# 技术支持人员不能为空"`                 // 技术支持人员
 	TechnicalSupportContent string      `json:"technicalSupportContent" v:"required# 技术支持内容不能为空"`                 // 技术支持内容
 	TechnicalSupportTime    *gtime.Time `json:"technicalSupportTime"    v:"required# 技术支持时间不能为空"`                 // 技术支持时间
 	//CustomerSatisfaction      string      `json:"customerSatisfaction"`      // 客户满意度 (10很满意、20满意、30较满意、40一般、50不满意)
-	ParentReceiver            string      `json:"parentReceiver"`                // 总部对接人
-	NboBudgetTime             *gtime.Time `json:"nboBudgetTime"`                 // 项目预算期限
-	CapitalSource             string      `json:"capitalSource"`                 // 资金来源
-	ProductSatisfaction       string      `json:"productSatisfaction"`           // 产品/方案满足情况
-	PurchasingWay             string      `json:"purchasingWay"`                 // 采购方式
-	PurchasingTime            *gtime.Time `json:"purchasingTime"`                // 采购时间
-	MakerId                   int         `json:"makerId"`                       // 关联决策人
-	MakerName                 string      `json:"makerName"`                     // 决策人姓名
-	MakerDept                 string      `json:"makerDept"`                     // 决策人部门
-	IsAdoptDashoo             string      `json:"isAdoptDashoo"`                 // 是否采纳大数技术参数(上传附件)
-	HistoricalTransactionInfo string      `json:"historicalTransactionInfo"`     // 经销商与客户历史成交信息
-	DealerSalesId             int         `json:"dealerSalesId"`                 // 关联经销商销售
-	DealerSalesName           string      `json:"dealerSalesName"`               // 经销商销售人员
-	Accendant                 string      `json:"accendant"`                     // 维护部门及人员
-	Remark                    string      `json:"remark" v:"required# 升级原因不能为空"` // 备注
+	ParentReceiver            string      `json:"parentReceiver"`                                                  // 总部对接人
+	NboBudgetTime             *gtime.Time `json:"nboBudgetTime"`                                                   // 项目预算期限
+	CapitalSource             string      `json:"capitalSource"`                                                   // 资金来源
+	ProductSatisfaction       string      `json:"productSatisfaction"`                                             // 产品/方案满足情况
+	PurchasingWay             string      `json:"purchasingWay"         v:"required-if:nboType,10#采购方式不能为空"`       // 采购方式
+	PurchasingTime            *gtime.Time `json:"purchasingTime"        v:"required-if:nboType,10#采购时间不能为空"`       // 采购时间
+	IsAdoptDashoo             string      `json:"isAdoptDashoo"         v:"required-if:nboType,10#是否采纳大数技术参数不能为空"` // 是否采纳大数技术参数(上传附件)
+	MakerId                   int         `json:"makerId"`                                                         // 关联决策人
+	MakerName                 string      `json:"makerName"`                                                       // 决策人姓名
+	MakerDept                 string      `json:"makerDept"`                                                       // 决策人部门
+	HistoricalTransactionInfo string      `json:"historicalTransactionInfo"`                                       // 经销商与客户历史成交信息
+	DealerSalesId             int         `json:"dealerSalesId"`                                                   // 关联经销商销售
+	DealerSalesName           string      `json:"dealerSalesName"`                                                 // 经销商销售人员
+	Accendant                 string      `json:"accendant"`                                                       // 维护部门及人员
+	Remark                    string      `json:"remark"`                                                          // 备注
+	ProjConversionReason      string      `json:"projConversionReason"   v:"required-if:nboType,30#转化原因不能为空"`      // 项目转化原因
 }
 
 // BusinessDowngradeReq 项目降级请求

+ 7 - 0
opms_parent/app/service/home/home.go

@@ -56,7 +56,14 @@ func (s *HomeService) QueryHomeReportConfig(moduleCode string) (config *plat.Pla
 func (s *HomeService) QueryHomeNumReportData(param *home.SearchNumReportData) (resp *home.NumReportResponses, err error) {
 	resp = new(home.NumReportResponses)
 	numConfig := make([]*home.NumReportResponse, 0)
+	tempMap := map[int64]byte{}
 	for _, v := range param.ReportId {
+		l := len(tempMap)
+		tempMap[v] = 0
+		if len(tempMap) == l {
+			continue
+		}
+
 		numReport := new(home.NumReportResponse)
 		numReport.Id = v
 		value, _ := s.getReportData(v, nil)

+ 98 - 25
opms_parent/app/service/proj/business.go

@@ -502,18 +502,6 @@ func (p *businessService) BusinessUpgrade(req *model.BusinessUpgradeReq) error {
 	if err != nil {
 		return err
 	}
-	var upgradeType string
-	switch true {
-	case business.NboType == StatusC && req.NboType == StatusB:
-		upgradeType = "option_0"
-	case business.NboType == StatusB && req.NboType == StatusA:
-		upgradeType = "option_1"
-	case business.NboType == StatusC && req.NboType == StatusA:
-		upgradeType = "option_2"
-	default:
-		return myerrors.TipsError("错误的升级类型")
-	}
-	fmt.Println(upgradeType)
 	businessMap := g.Map{
 		p.Dao.C.ApproStatus: ApprovalWaiting,
 	}
@@ -524,8 +512,6 @@ func (p *businessService) BusinessUpgrade(req *model.BusinessUpgradeReq) error {
 	opnContent["approStatus"] = ApprovalWaiting
 	service.SetUpdatedInfo(opnContent, p.GetCxtUserId(), p.GetCxtUserName())
 
-	// 审批流
-	workflowSrv, _ := workflowService.NewFlowService(p.Ctx)
 	err = p.Dao.Transaction(context.TODO(), func(ctx context.Context, tx *gdb.TX) error {
 		// 更新项目调级
 		_, err = p.Dao.TX(tx).WherePri(req.Id).Data(businessMap).Update()
@@ -542,10 +528,90 @@ func (p *businessService) BusinessUpgrade(req *model.BusinessUpgradeReq) error {
 		if err != nil {
 			return err
 		}
-		// OMS项目降级 审批
-		bizCode := business.NboCode + ":" + strconv.Itoa(business.Id)
-		_, err = workflowSrv.StartProcessInstance(bizCode, workflowModel.ProjectUpGrade, "", &workflow.StartProcessInstanceRequest{
-			ProcessCode: &BusinessUpgradeRequestProcessCode,
+		err = p.BusUpgradeDingEvent(business, req)
+		return err
+	})
+	return err
+}
+
+// 获取项目的钉钉审批的升级类型
+func (p *businessService) getBusDingUpgradeType(dbNboType, reqNboType string) string {
+	var upgradeType string
+	switch true {
+	case dbNboType == StatusReserve && reqNboType == StatusC: // 储备转C
+		upgradeType = "option_0"
+	case dbNboType == StatusReserve && reqNboType == StatusB: // 储备转B
+		upgradeType = "option_1"
+	case dbNboType == StatusReserve && reqNboType == StatusA: // 储备转A
+		upgradeType = "option_KTAX3Y9K5340"
+	case dbNboType == StatusC && reqNboType == StatusB: // C转B
+		upgradeType = "option_0"
+	case dbNboType == StatusC && reqNboType == StatusA: // C转A
+		upgradeType = "option_0"
+	case dbNboType == StatusB && reqNboType == StatusA: // B转A
+		upgradeType = "option_1"
+	default:
+	}
+	return upgradeType
+}
+
+// BusUpgradeDingEvent 项目升级钉钉审批流调用
+func (p *businessService) BusUpgradeDingEvent(business *model.ProjBusiness, req *model.BusinessUpgradeReq) error {
+	upgradeType := p.getBusDingUpgradeType(business.NboType, req.NboType)
+	if upgradeType == "" {
+		return myerrors.TipsError("错误的升级类型")
+	}
+	// 审批流
+	workflowSrv, _ := workflowService.NewFlowService(p.Ctx)
+	// OMS项目升级 审批
+	var err error
+	var dingReq *workflow.StartProcessInstanceRequest
+	bizCode := business.NboCode + ":" + strconv.Itoa(business.Id)
+	switch req.NboType {
+	case StatusC:
+		dingReq = &workflow.StartProcessInstanceRequest{
+			ProcessCode: &BusinessUpgradeCRequestProcessCode,
+			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_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.Remark),
+				},
+			},
+		}
+
+	case StatusB, StatusA: // 目前转B、A表单提交参数一致,仅A比B多几个必填-----2023.02.27
+		processCode := &BusinessUpgradeBRequestProcessCode
+		if req.NboType == StatusA {
+			processCode = &BusinessUpgradeARequestProcessCode
+		}
+		dingReq = &workflow.StartProcessInstanceRequest{
+			ProcessCode: processCode,
 			FormComponentValues: []*workflow.StartProcessInstanceRequestFormComponentValues{
 				{
 					Id:    utils.String("TextField-K2AD4O5B"),
@@ -602,18 +668,25 @@ func (p *businessService) BusinessUpgrade(req *model.BusinessUpgradeReq) error {
 					Name:  utils.String("是否我司参数"),
 					Value: utils.String(gconv.String(yesOrNoType[req.IsAdoptDashoo])),
 				},
+				{
+					Id:    utils.String("TextareaField_1GEL8JJL3H5S0"),
+					Name:  utils.String("备注"),
+					Value: utils.String(req.Remark),
+				},
 			},
-		})
-		if err != nil {
-			g.Log().Error(err)
-			return err
 		}
+	default:
+		return nil
+	}
+	_, err = workflowSrv.StartProcessInstance(bizCode, workflowModel.ProjectUpGrade, "", dingReq)
+	if err != nil {
+		g.Log().Error(err)
 		return err
-	})
-	return err
+	}
+	return nil
 }
 
-// BusinessUpgradeNotify 项目降级 审批结果通知
+// BusinessUpgradeNotify 项目级 审批结果通知
 func (p *businessService) BusinessUpgradeNotify(flow *workflowModel.PlatWorkflow, msg *message.MixMessage) error {
 	business, err := p.checkDingTalkNotify(flow, msg)
 	if err != nil {

+ 8 - 6
opms_parent/app/service/proj/const.go

@@ -40,7 +40,9 @@ const (
 
 // 钉钉审批流 Code
 var (
-	BusinessUpgradeRequestProcessCode   = "PROC-2D7A7F90-8E86-495C-A332-18690A0F0109" // 项目升级
+	BusinessUpgradeCRequestProcessCode  = "PROC-A1B1C9EF-EDB8-4F77-8058-06B60452574F" // 项目升级 转C
+	BusinessUpgradeBRequestProcessCode  = "PROC-2D7A7F90-8E86-495C-A332-18690A0F0109" // 项目升级 转B
+	BusinessUpgradeARequestProcessCode  = "PROC-D0425E06-F8AA-4B50-A253-376BC40CCE17" // 项目升级 转A
 	BusinessDowngradeRequestProcessCode = "PROC-E5A8B695-A6AF-49CF-9909-9A31C33A1211" // 项目降级
 	BusinessTransferRequestProcessCode  = "PROC-0F466630-D0CF-495B-8921-FB4B42F38B6D" // 项目转移
 	ConvertToReserveRequestProcessCode  = "PROC-03282849-0D00-4B76-AAB3-6C0219F569C1" // 转为储备
@@ -57,13 +59,13 @@ var nboType = g.MapStrStr{
 
 // 钉钉 采购方式
 var purchasingWayType = g.MapStrStr{
-	"10": "option_0",
-	"20": "option_1",
-	"30": "option_2",
+	"10": "option_0", // 直采
+	"20": "option_1", // 招标
+	"90": "option_2", // 其他
 }
 
 // 钉钉 是否
 var yesOrNoType = g.MapStrStr{
-	"10": "option_0",
-	"20": "option_1",
+	"10": "option_0", // 是
+	"20": "option_1", // 否
 }