Browse Source

feature(销售签约指标): 编辑计划指标功能实现

likai 1 year ago
parent
commit
8a6b8c4cb1

+ 14 - 0
opms_parent/app/handler/contract/ctr_contract_sale_target.go

@@ -42,3 +42,17 @@ func (c *TargetHandler) Import(ctx context.Context, req *model.ExcelImportReq, r
 	}
 	return nil
 }
+
+// Swagger:TargetHandler 销售签约指标 编辑指标功能
+func (c *TargetHandler) Edit(ctx context.Context, req *model.EditTargetReq, rsp *comm_def.CommonMsg) error {
+	g.Log().Infof("CtrContract.Add request %#v ", *req)
+	s, err := service.NewCtrContractSaleTargetService(ctx)
+	if err != nil {
+		return err
+	}
+	err = s.Edit(ctx, req)
+	if err != nil {
+		return err
+	}
+	return nil
+}

+ 4 - 0
opms_parent/app/model/contract/ctr_contract_sale_target.go

@@ -26,6 +26,10 @@ type ExcelImportReq struct {
 	ExcelUrl string `json:"excelUrl" v:"required#请输入excel地址"` // excel 文件地址
 }
 
+type EditTargetReq struct {
+	Target *CtrContractSaleTarget `json:"target"` // 销售指标
+}
+
 type Share struct {
 	// 合同信息
 	ContractAmount   float64     `orm:"contract_amount"    json:"contractAmount"`   // 合同金额

+ 59 - 0
opms_parent/app/service/contract/ctr_contract_sale_target.go

@@ -75,6 +75,65 @@ func (s CtrContractSaleTargetService) List(ctx context.Context, req *model.SaleT
 	return total, results, err
 }
 
+// Edit 销售计划编辑(需要修改对应季度、年度计划,进而修改完成率)
+func (s CtrContractSaleTargetService) Edit(ctx context.Context, req *model.EditTargetReq) error {
+	if req.Target.Id == 0 {
+		return myerrors.TipsError("Id为空,操作失败")
+	}
+
+	// 统计 人/年度/月度金额
+	// 第一季度
+	req.Target.QuarterPlan1 = req.Target.Plan1 + req.Target.Plan2 + req.Target.Plan3
+	if req.Target.QuarterPlan1 != 0 {
+		req.Target.QuarterCompleteRatio1 = req.Target.QuarterComplete1 / req.Target.QuarterPlan1 * 100
+	}
+	// 第二季度
+	req.Target.QuarterPlan2 = req.Target.Plan4 + req.Target.Plan5 + req.Target.Plan6
+	if req.Target.QuarterPlan2 != 0 {
+		req.Target.QuarterCompleteRatio2 = req.Target.QuarterComplete2 / req.Target.QuarterPlan2 * 100
+	}
+	// 第三季度
+	req.Target.QuarterPlan3 = req.Target.Plan7 + req.Target.Plan8 + req.Target.Plan9
+	if req.Target.QuarterPlan3 != 0 {
+		req.Target.QuarterCompleteRatio3 = req.Target.QuarterComplete3 / req.Target.QuarterPlan3 * 100
+	}
+	// 年度
+	req.Target.YearPlan = req.Target.QuarterPlan1 + req.Target.QuarterPlan2 + req.Target.QuarterPlan3 + req.Target.Plan10 + req.Target.Plan11 + req.Target.Plan12
+	if req.Target.YearPlan != 0 {
+		req.Target.YearCompleteRatio = req.Target.YearComplete / req.Target.YearPlan * 100
+	}
+
+	// 更新数据
+	data := g.Map{
+		"plan1":                   req.Target.Plan1,
+		"plan2":                   req.Target.Plan2,
+		"plan3":                   req.Target.Plan3,
+		"plan4":                   req.Target.Plan4,
+		"plan5":                   req.Target.Plan5,
+		"plan6":                   req.Target.Plan6,
+		"plan7":                   req.Target.Plan7,
+		"plan8":                   req.Target.Plan8,
+		"plan9":                   req.Target.Plan9,
+		"plan10":                  req.Target.Plan10,
+		"plan11":                  req.Target.Plan11,
+		"plan12":                  req.Target.Plan12,
+		"quarter_plan1":           req.Target.QuarterPlan1,
+		"quarter_plan2":           req.Target.QuarterPlan2,
+		"quarter_plan3":           req.Target.QuarterPlan3,
+		"year_plan":               req.Target.YearPlan,
+		"quarter_complete_ratio1": req.Target.QuarterCompleteRatio1,
+		"quarter_complete_ratio2": req.Target.QuarterCompleteRatio2,
+		"quarter_complete_ratio3": req.Target.QuarterCompleteRatio3,
+		"year_complete_ratio":     req.Target.YearCompleteRatio,
+		"updated_by":              s.userInfo.Id,
+		"updated_name":            s.userInfo.NickName,
+		"updated_time":            gtime.Now(),
+	}
+	_, err := s.Dao.Update(data, fmt.Sprintf("id='%v'", req.Target.Id))
+
+	return err
+}
+
 // Import excel数据导入
 func (s CtrContractSaleTargetService) Import(ctx context.Context, req *model.ExcelImportReq) error {
 	validErr := gvalid.CheckStruct(ctx, req, nil)