Browse Source

Merge remote-tracking branch 'origin/develop' into develop

yanglingling 1 year ago
parent
commit
c8d7301dae
23 changed files with 491 additions and 389 deletions
  1. 1 1
      opms_parent/app/dao/train/internal/train_head_office.go
  2. 1 1
      opms_parent/app/dao/train/internal/train_head_office_feedback.go
  3. 7 1
      opms_parent/app/dao/train/internal/train_head_office_feedback_detail.go
  4. 1 1
      opms_parent/app/dao/train/train_head_office.go
  5. 1 1
      opms_parent/app/dao/train/train_head_office_feedback.go
  6. 1 1
      opms_parent/app/dao/train/train_head_office_feedback_detail.go
  7. 22 18
      opms_parent/app/handler/train/train_head_office.go
  8. 7 6
      opms_parent/app/model/base/base_distributor.go
  9. 3 2
      opms_parent/app/model/cust/product_consult_record.go
  10. 2 0
      opms_parent/app/model/proj/internal/train_head_office_feedback_detail.go
  11. 25 0
      opms_parent/app/model/train/internal/train_head_office.go
  12. 24 0
      opms_parent/app/model/train/internal/train_head_office_feedback.go
  13. 28 0
      opms_parent/app/model/train/internal/train_head_office_feedback_detail.go
  14. 37 34
      opms_parent/app/model/train/train_head_office.go
  15. 1 1
      opms_parent/app/model/train/train_head_office_feedback.go
  16. 1 1
      opms_parent/app/model/train/train_head_office_feedback_detail.go
  17. 4 0
      opms_parent/app/service/base/base_distributor.go
  18. 3 1
      opms_parent/app/service/cust/product_consult_record.go
  19. 3 1
      opms_parent/app/service/home/home.go
  20. 8 4
      opms_parent/app/service/home/report.go
  21. 0 314
      opms_parent/app/service/proj/train_head_office.go
  22. 310 0
      opms_parent/app/service/train/train_head_office.go
  23. 1 1
      opms_parent/main.go

+ 1 - 1
opms_parent/app/dao/proj/internal/train_head_office.go → opms_parent/app/dao/train/internal/train_head_office.go

@@ -12,7 +12,7 @@ import (
 	"github.com/gogf/gf/frame/gmvc"
 	"time"
 
-	model "dashoo.cn/micro/app/model/proj"
+	"dashoo.cn/micro/app/model/train"
 )
 
 // TrainHeadOfficeDao is the manager for logic model data accessing and custom defined data operations functions management.

+ 1 - 1
opms_parent/app/dao/proj/internal/train_head_office_feedback.go → opms_parent/app/dao/train/internal/train_head_office_feedback.go

@@ -12,7 +12,7 @@ import (
 	"github.com/gogf/gf/frame/gmvc"
 	"time"
 
-	model "dashoo.cn/micro/app/model/proj"
+	"dashoo.cn/micro/app/model/train"
 )
 
 // TrainHeadOfficeFeedbackDao is the manager for logic model data accessing and custom defined data operations functions management.

+ 7 - 1
opms_parent/app/dao/proj/internal/train_head_office_feedback_detail.go → opms_parent/app/dao/train/internal/train_head_office_feedback_detail.go

@@ -12,7 +12,7 @@ import (
 	"github.com/gogf/gf/frame/gmvc"
 	"time"
 
-	model "dashoo.cn/micro/app/model/proj"
+	"dashoo.cn/micro/app/model/train"
 )
 
 // TrainHeadOfficeFeedbackDetailDao is the manager for logic model data accessing and custom defined data operations functions management.
@@ -39,6 +39,8 @@ type trainHeadOfficeFeedbackDetailColumns struct {
 	UpdatedName         string // 更新人
 	UpdatedTime         string // 更新时间
 	DeletedTime         string // 删除时间
+	SaleId              string // 销售id
+	SaleName            string // 销售姓名
 }
 
 var (
@@ -61,6 +63,8 @@ var (
 			UpdatedName:         "updated_name",
 			UpdatedTime:         "updated_time",
 			DeletedTime:         "deleted_time",
+			SaleId:              "sale_id",
+			SaleName:            "sale_name",
 		},
 	}
 )
@@ -85,6 +89,8 @@ func NewTrainHeadOfficeFeedbackDetailDao(tenant string) TrainHeadOfficeFeedbackD
 			UpdatedName:         "updated_name",
 			UpdatedTime:         "updated_time",
 			DeletedTime:         "deleted_time",
+			SaleId:              "sale_id",
+			SaleName:            "sale_name",
 		},
 	}
 	return dao

+ 1 - 1
opms_parent/app/dao/proj/train_head_office.go → opms_parent/app/dao/train/train_head_office.go

@@ -5,7 +5,7 @@
 package dao
 
 import (
-	"dashoo.cn/micro/app/dao/proj/internal"
+	"dashoo.cn/micro/app/dao/train/internal"
 )
 
 // trainHeadOfficeDao is the manager for logic model data accessing

+ 1 - 1
opms_parent/app/dao/proj/train_head_office_feedback.go → opms_parent/app/dao/train/train_head_office_feedback.go

@@ -5,7 +5,7 @@
 package dao
 
 import (
-	"dashoo.cn/micro/app/dao/proj/internal"
+	"dashoo.cn/micro/app/dao/train/internal"
 )
 
 // trainHeadOfficeFeedbackDao is the manager for logic model data accessing

+ 1 - 1
opms_parent/app/dao/proj/train_head_office_feedback_detail.go → opms_parent/app/dao/train/train_head_office_feedback_detail.go

@@ -5,7 +5,7 @@
 package dao
 
 import (
-	"dashoo.cn/micro/app/dao/proj/internal"
+	"dashoo.cn/micro/app/dao/train/internal"
 )
 
 // trainHeadOfficeFeedbackDetailDao is the manager for logic model data accessing

+ 22 - 18
opms_parent/app/handler/proj/train_head_office.go → opms_parent/app/handler/train/train_head_office.go

@@ -1,4 +1,4 @@
-package base
+package train
 
 import (
 	"context"
@@ -7,8 +7,8 @@ import (
 	"github.com/gogf/gf/frame/g"
 	"github.com/gogf/gf/util/gvalid"
 
-	projModel "dashoo.cn/micro/app/model/proj"
-	projSrv "dashoo.cn/micro/app/service/proj"
+	projModel "dashoo.cn/micro/app/model/train"
+	projSrv "dashoo.cn/micro/app/service/train"
 )
 
 type TrainHeadHander struct{}
@@ -48,21 +48,21 @@ func (p *TrainHeadHander) Create(ctx context.Context, req *projModel.CreateTrain
 	return nil
 }
 
-func (p *TrainHeadHander) UpdateById(ctx context.Context, req *projModel.UpdateTrainHead, rsp *comm_def.CommonMsg) error {
-	// 参数校验
-	if err := gvalid.CheckStruct(ctx, req, nil); err != nil {
-		return err
-	}
-	businessService, err := projSrv.NewtrainHeadService(ctx)
-	if err != nil {
-		return err
-	}
-	err = businessService.UpdateById(req)
-	if err != nil {
-		return err
-	}
-	return nil
-}
+//func (p *TrainHeadHander) UpdateById(ctx context.Context, req *projModel.UpdateTrainHead, rsp *comm_def.CommonMsg) error {
+//	// 参数校验
+//	if err := gvalid.CheckStruct(ctx, req, nil); err != nil {
+//		return err
+//	}
+//	businessService, err := projSrv.NewtrainHeadService(ctx)
+//	if err != nil {
+//		return err
+//	}
+//	err = businessService.UpdateById(req)
+//	if err != nil {
+//		return err
+//	}
+//	return nil
+//}
 
 func (p *TrainHeadHander) DeleteByIds(ctx context.Context, req *comm_def.IdsReq, rsp *comm_def.CommonMsg) error {
 	// 参数校验
@@ -76,6 +76,8 @@ func (p *TrainHeadHander) DeleteByIds(ctx context.Context, req *comm_def.IdsReq,
 	err = businessService.DeleteByIds(req.Ids)
 	return err
 }
+
+// GetEntityById 总部查看
 func (h *TrainHeadHander) GetEntityById(ctx context.Context, req *comm_def.IdReq, rsp *comm_def.CommonMsg) error {
 	businessService, err := projSrv.NewtrainHeadService(ctx)
 	if err != nil {
@@ -87,6 +89,8 @@ func (h *TrainHeadHander) GetEntityById(ctx context.Context, req *comm_def.IdReq
 	}
 	return nil
 }
+
+// GetDetailById 销售查看
 func (h *TrainHeadHander) GetDetailById(ctx context.Context, req *comm_def.IdReq, rsp *comm_def.CommonMsg) error {
 	businessService, err := projSrv.NewtrainHeadService(ctx)
 	if err != nil {

+ 7 - 6
opms_parent/app/model/base/base_distributor.go

@@ -16,12 +16,13 @@ type BaseDistributor internal.BaseDistributor
 
 // Fill with you ideas below.
 type BaseDistributorSearchReq struct {
-	DistCode      string   `json:"distCode"`      // 经销商code
-	DistName      string   `json:"distName"`      // 经销商名称
-	BelongSale    string   `json:"belongSale"`    // 所属经销商
-	ProvinceId    []string `json:"provinceId"`    //  省份ID
-	DistType      string   `json:"distType"`      // 经销商类型
-	WithStatistic bool     `json:"withStatistic"` // 经销商统计
+	DistCode         string   `json:"distCode"`         // 经销商code
+	DistName         string   `json:"distName"`         // 经销商名称
+	BelongSale       string   `json:"belongSale"`       // 所属经销商
+	ProvinceId       []string `json:"provinceId"`       //  省份ID
+	DistType         string   `json:"distType"`         // 经销商类型
+	WithStatistic    bool     `json:"withStatistic"`    // 经销商统计
+	BelongSaleIdList []int64  `json:"belongSaleIdList"` //销售id
 	request.PageReq
 }
 

+ 3 - 2
opms_parent/app/model/cust/product_consult_record.go

@@ -52,10 +52,11 @@ type ProductConsultRecordUpdateReq struct {
 	InchargeId   int         `json:"inchargeId"`   // 对接人ID
 	InchargeName string      `json:"inchargeName"` // 对接人(销售工程师)
 	Content      string      `json:"content"`      // 内容
+	//FollowCommunicateCase string      `json:"followCommunicateCase"` // 10、信息有效,可继续跟进,转C类订单;20、信息有效,可转为储备用户;30、信息无效,不再跟进。40 信息有效,可转为经销商
+	//DistributorId         int         `json:"distributorId"`         // 经销商ID
+	//DistributorName       string      `json:"distributorName"`       // 经销商
 	//Progress        string      `json:"progress"`        // 进展
 	//NextPlan        string      `json:"nextPlan"`        // 下一步计划
-	//DistributorId   int         `json:"distributorId"`   // 经销商ID
-	//DistributorName string      `json:"distributorName"` // 经销商
 	//CustId          int         `json:"custId"`          // 关联客户
 	//CustName        string      `json:"custName"`        // 客户名称
 	//NboId           int         `json:"nboId"`           // 关联项目

+ 2 - 0
opms_parent/app/model/proj/internal/train_head_office_feedback_detail.go

@@ -23,4 +23,6 @@ type TrainHeadOfficeFeedbackDetail struct {
 	UpdatedName         string      `orm:"updated_name"         json:"updatedName"`         // 更新人
 	UpdatedTime         *gtime.Time `orm:"updated_time"         json:"updatedTime"`         // 更新时间
 	DeletedTime         *gtime.Time `orm:"deleted_time"         json:"deletedTime"`         // 删除时间
+	SaleId              int         `orm:"sale_id"              json:"saleId"`              // 销售id
+	SaleName            string      `orm:"sale_name"            json:"saleName"`            // 销售姓名
 }

+ 25 - 0
opms_parent/app/model/train/internal/train_head_office.go

@@ -0,0 +1,25 @@
+// ==========================================================================
+// This is auto-generated by gf cli tool. DO NOT EDIT THIS FILE MANUALLY.
+// ==========================================================================
+
+package internal
+
+import (
+	"github.com/gogf/gf/os/gtime"
+)
+
+// TrainHeadOffice is the golang structure for table train_head_office.
+type TrainHeadOffice struct {
+	Id                     int         `orm:"id,primary"                json:"id"`                     // 主键
+	TrainTitle             string      `orm:"train_title"               json:"trainTitle"`             // 培训主题
+	TrainDate              *gtime.Time `orm:"train_date"                json:"trainDate"`              // 培训日期
+	TrainConcreteStartTime *gtime.Time `orm:"train_concrete_start_time" json:"trainConcreteStartTime"` // 培训开始时间
+	TrainConcreteEndTime   *gtime.Time `orm:"train_concrete_end_time"   json:"trainConcreteEndTime"`   // 培训结束时间
+	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"`            // 删除时间
+}

+ 24 - 0
opms_parent/app/model/train/internal/train_head_office_feedback.go

@@ -0,0 +1,24 @@
+// ==========================================================================
+// This is auto-generated by gf cli tool. DO NOT EDIT THIS FILE MANUALLY.
+// ==========================================================================
+
+package internal
+
+import (
+	"github.com/gogf/gf/os/gtime"
+)
+
+// TrainHeadOfficeFeedback is the golang structure for table train_head_office_feedback.
+type TrainHeadOfficeFeedback struct {
+	Id          int         `orm:"id,primary"   json:"id"`          // 主键
+	TrainId     int         `orm:"train_id"     json:"trainId"`     // 工单id
+	SaleId      int         `orm:"sale_id"      json:"saleId"`      // 销售工程师id
+	SaleName    string      `orm:"sale_name"    json:"saleName"`    // 销售工程师姓名
+	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"` // 删除时间
+}

+ 28 - 0
opms_parent/app/model/train/internal/train_head_office_feedback_detail.go

@@ -0,0 +1,28 @@
+// ==========================================================================
+// This is auto-generated by gf cli tool. DO NOT EDIT THIS FILE MANUALLY.
+// ==========================================================================
+
+package internal
+
+import (
+	"github.com/gogf/gf/os/gtime"
+)
+
+// TrainHeadOfficeFeedbackDetail is the golang structure for table train_head_office_feedback_detail.
+type TrainHeadOfficeFeedbackDetail struct {
+	Id                  int         `orm:"id,primary"           json:"id"`                  // 主键
+	MainId              int         `orm:"main_id"              json:"mainId"`              // 工单id
+	DistributorId       int         `orm:"distributor_id"       json:"distributorId"`       // 渠道id
+	DistributorName     string      `orm:"distributor_name"     json:"distributorName"`     // 渠道名称
+	TrainingPersNum     int         `orm:"training_pers_num"    json:"trainingPersNum"`     // 参训人数
+	DistributorFeedback string      `orm:"distributor_feedback" json:"distributorFeedback"` // 经销商反馈
+	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"`         // 删除时间
+	SaleId              int         `orm:"sale_id"              json:"saleId"`              // 销售id
+	SaleName            string      `orm:"sale_name"            json:"saleName"`            // 销售姓名
+}

+ 37 - 34
opms_parent/app/model/proj/train_head_office.go → opms_parent/app/model/train/train_head_office.go

@@ -5,7 +5,7 @@
 package model
 
 import (
-	"dashoo.cn/micro/app/model/proj/internal"
+	"dashoo.cn/micro/app/model/train/internal"
 	"dashoo.cn/opms_libary/request"
 	"github.com/gogf/gf/os/gtime"
 )
@@ -37,17 +37,10 @@ type TrainHeadDetail struct {
 	TrainDate              *gtime.Time       `json:"trainDate"`              // 培训日期
 	TrainConcreteStartTime *gtime.Time       `json:"trainConcreteStartTime"` // 培训开始时间
 	TrainConcreteEndTime   *gtime.Time       `json:"trainConcreteEndTime"`   // 培训结束时间
-	FeedbackList           []*FeedbackDetail `json:"feedbackList"`
+	SaleList               []*Sale           `json:"SaleList"`               // 销售工程师列表
+	DistributorList        []*FeedbackDetail `json:"distributorList"`        //经销商列表
 }
 
-type TrainHeadDetailForFeedBack struct {
-	Id                     int                  `json:"id"`                     // 主键
-	TrainTitle             string               `json:"trainTitle"`             // 培训主题
-	TrainDate              *gtime.Time          `json:"trainDate"`              // 培训日期
-	TrainConcreteStartTime *gtime.Time          `json:"trainConcreteStartTime"` // 培训开始时间
-	TrainConcreteEndTime   *gtime.Time          `json:"trainConcreteEndTime"`   // 培训结束时间
-	FeedbackDetailList     []*FeedbackDetailRes `json:"feedbackDetailList"`
-}
 type FeedbackDetailRes struct {
 	Id                  int    `json:"id"`                  // 主键
 	SaleId              int    `json:"saleId"`              // 销售工程师id
@@ -59,52 +52,62 @@ type FeedbackDetailRes struct {
 }
 
 type CreateTrainHead struct {
-	TrainTitle             string            `json:"trainTitle"`             // 培训主题
-	TrainDate              *gtime.Time       `json:"trainDate"`              // 培训日期
-	TrainConcreteStartTime *gtime.Time       `json:"trainConcreteStartTime"` // 培训开始时间
-	TrainConcreteEndTime   *gtime.Time       `json:"trainConcreteEndTime"`   // 培训结束时间
-	FeedbackList           []*CreateFeedback `json:"feedbackList"`
+	TrainTitle             string         `json:"trainTitle"`             // 培训主题
+	TrainDate              *gtime.Time    `json:"trainDate"`              // 培训日期
+	TrainConcreteStartTime *gtime.Time    `json:"trainConcreteStartTime"` // 培训开始时间
+	TrainConcreteEndTime   *gtime.Time    `json:"trainConcreteEndTime"`   // 培训结束时间
+	SaleList               []*Sale        `json:"saleList"`               // 销售工程师列表
+	DistributorList        []*Distributor `json:"distributorList"`        //经销商列表
 }
 type UpdateTrainHead struct {
+	Id                     int            `json:"id"`                     // 主键
+	TrainTitle             string         `json:"trainTitle"`             // 培训主题
+	TrainDate              *gtime.Time    `json:"trainDate"`              // 培训日期
+	TrainConcreteStartTime *gtime.Time    `json:"trainConcreteStartTime"` // 培训开始时间
+	TrainConcreteEndTime   *gtime.Time    `json:"trainConcreteEndTime"`   // 培训结束时间
+	SaleList               []*Sale        `json:"saleList"`               // 销售工程师列表
+	DistributorList        []*Distributor `json:"distributorList"`        //经销商列表
+
+}
+
+type TrainHeadDetailForFeedBack struct {
 	Id                     int               `json:"id"`                     // 主键
 	TrainTitle             string            `json:"trainTitle"`             // 培训主题
 	TrainDate              *gtime.Time       `json:"trainDate"`              // 培训日期
 	TrainConcreteStartTime *gtime.Time       `json:"trainConcreteStartTime"` // 培训开始时间
 	TrainConcreteEndTime   *gtime.Time       `json:"trainConcreteEndTime"`   // 培训结束时间
-	FeedbackList           []*UpdateFeedback `json:"feedbackList"`
+	DistributorList        []*FeedbackDetail `json:"distributorList"`        //经销商列表
 }
-type CreateFeedback struct {
-	Sale            Sale           `json:"sale"`            // 销售工程师id
-	DistributorList []*Distributor `json:"distributorList"` // 渠道
 
-}
 type Sale struct {
 	SaleId   int    `json:"saleId"`   // 销售工程师id
 	SaleName string `json:"saleName"` // 销售工程师姓名
 
 }
+
+// Distributor 经销商
 type Distributor struct {
 	Id              int    `json:"id"`              // 主键
 	MainId          int    `json:"mainId"`          // 工单id
+	SaleId          int    `json:"saleId"`          //销售工程师id
+	SaleName        string `json:"saleName"`        //销售工程师id
 	DistributorId   int    `json:"distributorId"`   // 渠道id
 	DistributorName string `json:"distributorName"` // 渠道名称
 }
-type UpdateFeedback struct {
-	Id              int            `json:"id"`              // 主键
-	TrainId         int            `json:"trainId"`         // 工单id
-	Sale            Sale           `json:"sale"`            // 销售工程师id
-	DistributorList []*Distributor `json:"distributorList"` // 渠道
-	Operate         string         `json:"operate"`
-}
+
 type FeedbackDetail struct {
-	Id                  int            `json:"id"`                  // 主键
-	TrainId             int            `json:"trainId"`             // 工单id
-	SaleId              int            `json:"saleId"`              // 销售工程师id
-	SaleName            string         `json:"saleName"`            // 销售工程师姓名
-	DistributorList     []*Distributor `json:"distributorList"`     // 渠道
-	TrainingPersNum     int            `json:"trainingPersNum"`     // 参训人数
-	DistributorFeedback string         `json:"distributorFeedback"` // 经销商反馈
+	Id                  int         `json:"id"`                  // 主键
+	MainId              int         `json:"mainId"`              // 工单id
+	SaleId              int         `json:"saleId"`              //销售工程师id
+	SaleName            string      `json:"saleName"`            //销售工程师
+	DistributorId       int         `json:"distributorId"`       // 渠道id
+	DistributorName     string      `json:"distributorName"`     // 渠道名称
+	TrainingPersNum     int         `json:"trainingPersNum"`     // 参训人数
+	DistributorFeedback string      `json:"distributorFeedback"` // 经销商反馈
+	UpdatedTime         *gtime.Time `json:"updatedTime"`         // 更新时间
+
 }
+
 type FeedBackTrainReq struct {
 	FeedBackTrainList []*FeedBackTrain `json:"feedBackTrainList"`
 }

+ 1 - 1
opms_parent/app/model/proj/train_head_office_feedback.go → opms_parent/app/model/train/train_head_office_feedback.go

@@ -5,7 +5,7 @@
 package model
 
 import (
-	"dashoo.cn/micro/app/model/proj/internal"
+	"dashoo.cn/micro/app/model/train/internal"
 )
 
 // TrainHeadOfficeFeedback is the golang structure for table train_head_office_feedback.

+ 1 - 1
opms_parent/app/model/proj/train_head_office_feedback_detail.go → opms_parent/app/model/train/train_head_office_feedback_detail.go

@@ -5,7 +5,7 @@
 package model
 
 import (
-	"dashoo.cn/micro/app/model/proj/internal"
+	"dashoo.cn/micro/app/model/train/internal"
 )
 
 // TrainHeadOfficeFeedbackDetail is the golang structure for table train_head_office_feedback_detail.

+ 4 - 0
opms_parent/app/service/base/base_distributor.go

@@ -80,6 +80,10 @@ func (s *distributorService) GetList(ctx context.Context, req *model.BaseDistrib
 	if req.BelongSale != "" {
 		distributorModel = distributorModel.WhereLike(s.Dao.C.BelongSale, "%"+req.BelongSale+"%")
 	}
+	if len(req.BelongSaleIdList) > 0 {
+		distributorModel = distributorModel.WhereIn(s.Dao.C.BelongSaleId, req.BelongSaleIdList)
+	}
+
 	if len(req.ProvinceId) > 0 {
 		distributorModel = distributorModel.WhereIn(s.Dao.C.ProvinceId, req.ProvinceId)
 	}

+ 3 - 1
opms_parent/app/service/cust/product_consult_record.go

@@ -179,7 +179,9 @@ func (s ProductConsultRecordService) Update(ctx context.Context, req *model.Prod
 	toupdate["product"] = req.Product
 	toupdate["incharge_id"] = req.InchargeId
 	toupdate["incharge_name"] = req.InchargeName
-	//toupdate["content"] = req.Content
+	toupdate["content"] = req.Content
+	//toupdate["follow_communicate_case"] = req.FollowCommunicateCase
+
 	//toupdate["progress"] = req.Progress
 	//toupdate["next_plan"] = req.NextPlan
 	//toupdate["distributor_id"] = req.DistributorId

+ 3 - 1
opms_parent/app/service/home/home.go

@@ -227,7 +227,9 @@ func (s *HomeService) getNumStatisticsData(id int64, params *map[string]interfac
 		if err != nil {
 			return "", err
 		}
-		count1, err := contractDao.As("a").DataScope(s.Ctx, "incharge_id").InnerJoin("ctr_contract_invoice b", "a.id=b.contract_id").Where("b.invoice_date>=? AND b.invoice_date<=? AND b.appro_status='30'", yearStart, yearEnd).
+		count1, err := contractDao.As("a").DataScope(s.Ctx, "incharge_id").InnerJoin("ctr_contract_invoice b", "a.id=b.contract_id").
+			Where("b.invoice_date>=? AND b.invoice_date<=? AND b.appro_status='30'", yearStart, yearEnd).
+			Where("a.contract_sign_time>=? AND a.contract_sign_time<=? ", yearStart, yearEnd).
 			Sum("b.invoice_amount")
 		if err != nil {
 			return "", err

+ 8 - 4
opms_parent/app/service/home/report.go

@@ -132,11 +132,11 @@ func getCompanyContractReportData(ctx context.Context, dataType string, params *
 		if searchType == "month" {
 			dateWhere1 = fmt.Sprintf("ctr_contract.contract_start_time LIKE '%v'", date.Format("Y-m")+"-%")
 			dateWhere2 = fmt.Sprintf("ctr_contract_collection.collection_datetime LIKE '%v'", date.Format("Y-m")+"-%")
-			dateWhere3 = fmt.Sprintf("monthly=%v", date.Month())
+			dateWhere3 = fmt.Sprintf("monthly=%v AND created_time LIKE '%v%%'", date.Month(), date.Format("Y"))
 		} else if searchType == "quarter" {
 			dateWhere1 = getQuarterWhere(date, "ctr_contract.contract_start_time")
 			dateWhere2 = getQuarterWhere(date, "ctr_contract_collection.collection_datetime")
-			dateWhere3 = getQuarterMonthWhere(date, "monthly")
+			dateWhere3 = getQuarterMonthWhere(date, "monthly") + fmt.Sprintf(" AND created_time LIKE '%v%%'", date.Format("Y"))
 		}
 	}
 	// 统计字段
@@ -186,7 +186,8 @@ func getCompanyContractReportData(ctx context.Context, dataType string, params *
 	}
 
 	// 统计目标值和实际值
-	for index, target := range targets {
+	var index int
+	for _, target := range targets {
 		// 过滤掉已删除的销售
 		if !normalUserMap[target["sale_user_id"].Int()] {
 			continue
@@ -203,6 +204,7 @@ func getCompanyContractReportData(ctx context.Context, dataType string, params *
 		} else {
 			reportData.PercentData = append(reportData.PercentData, reportData.YDataReal[index]*100/reportData.YDataTarget[index])
 		}
+		index++
 	}
 
 	return &reportData, nil
@@ -331,7 +333,8 @@ func getClockfrequency(ctx context.Context, dataType string, params *map[string]
 	}
 
 	// 赋值实际值
-	for index, target := range platpunchrecords {
+	var index int
+	for _, target := range platpunchrecords {
 		// 过滤掉已删除的销售
 		if !normalUserMap[target["user_id"].Int()] {
 			continue
@@ -348,6 +351,7 @@ func getClockfrequency(ctx context.Context, dataType string, params *map[string]
 		} else {
 			reportData.PercentData = append(reportData.PercentData, reportData.YDataReal[index]*100/reportData.YDataTarget[index])
 		}
+		index++
 	}
 	return &reportData, nil
 }

+ 0 - 314
opms_parent/app/service/proj/train_head_office.go

@@ -1,314 +0,0 @@
-package proj
-
-import (
-	"context"
-	projDao "dashoo.cn/micro/app/dao/proj"
-	model "dashoo.cn/micro/app/model/proj"
-	"dashoo.cn/micro/app/service"
-	"dashoo.cn/opms_libary/myerrors"
-	"database/sql"
-	"github.com/gogf/gf/database/gdb"
-	"github.com/gogf/gf/frame/g"
-	"github.com/gogf/gf/os/gtime"
-)
-
-type trainHeadService struct {
-	*service.ContextService
-	Dao       *projDao.TrainHeadOfficeDao
-	FeedDao   *projDao.TrainHeadOfficeFeedbackDao
-	DetailDao *projDao.TrainHeadOfficeFeedbackDetailDao
-}
-
-func NewtrainHeadService(ctx context.Context) (svc *trainHeadService, err error) {
-	svc = new(trainHeadService)
-	if svc.ContextService, err = svc.Init(ctx); err != nil {
-		return nil, err
-	}
-	svc.Dao = projDao.NewTrainHeadOfficeDao(svc.Tenant)
-	svc.FeedDao = projDao.NewTrainHeadOfficeFeedbackDao(svc.Tenant)
-	svc.DetailDao = projDao.NewTrainHeadOfficeFeedbackDetailDao(svc.Tenant)
-
-	return svc, nil
-}
-
-func (s *trainHeadService) GetList(req *model.SearchTrainHeadReq) (total int, list []*model.SearchTrainHeadRes, err error) {
-	db := s.Dao.Ctx(s.Ctx)
-
-	if req.TrainTitle != "" {
-		db = db.WhereLike(s.Dao.C.TrainTitle, "%"+req.TrainTitle+"%")
-	}
-	//if req.TrainStartDate != nil {
-	//	db = db.Where("train_date >=?", req.TrainStartDate)
-	//}
-	//if req.TrainEndDate != nil {
-	//	db = db.Where("train_date <=?", req.TrainEndDate)
-	//}
-
-	total, err = db.Count()
-	if err != nil {
-		return 0, nil, err
-	}
-
-	err = db.OrderDesc(s.Dao.C.CreatedTime).Page(req.GetPage()).Scan(&list)
-	//if err != nil && err != sql.ErrNoRows {
-	if err != nil {
-
-		return 0, nil, err
-	}
-	return total, list, nil
-}
-
-func (s *trainHeadService) GetEntityById(id int64) (detail *model.TrainHeadDetail, err error) {
-
-	err = s.Dao.WherePri(id).Scan(&detail)
-
-	if err == sql.ErrNoRows {
-		return nil, myerrors.TipsError("工单不存在")
-	}
-	if err != nil {
-		return nil, err
-	}
-	settingList := make([]*model.FeedbackDetail, 0)
-	err = s.FeedDao.Where(s.FeedDao.C.TrainId, id).Scan(&settingList)
-
-	detail.FeedbackList = settingList
-	for _, feedbackDetail := range settingList {
-		Distributor := make([]*model.Distributor, 0)
-		err = s.DetailDao.Where(s.DetailDao.C.MainId, feedbackDetail.Id).Scan(&Distributor)
-		if err != nil {
-			return nil, myerrors.TipsError("工单查询失败,请稍后重试")
-		}
-		feedbackDetail.DistributorList = Distributor
-
-	}
-	if err != nil {
-		return nil, myerrors.TipsError("工单查询失败,请稍后重试")
-	}
-	return detail, nil
-}
-
-func (s *trainHeadService) GetDetailById(id int64) (detail *model.TrainHeadDetailForFeedBack, err error) {
-
-	err = s.Dao.WherePri(id).Scan(&detail)
-
-	if err == sql.ErrNoRows {
-		return nil, myerrors.TipsError("工单不存在")
-	}
-	if err != nil {
-		return nil, err
-	}
-	settingList := make([]*model.FeedbackDetailRes, 0)
-	err = s.DetailDao.As("fd").LeftJoin("train_head_office_feedback as f", "f.id = fd.main_id").Where("f.train_id", id).
-		Fields("fd.*,f.sale_id,f.sale_name").
-		Scan(&settingList)
-	if err != nil {
-		return nil, myerrors.TipsError("工单查询失败,请稍后重试")
-	}
-	detail.FeedbackDetailList = settingList
-
-	return detail, nil
-}
-
-func (s *trainHeadService) Create(req *model.CreateTrainHead) (err error) {
-
-	ent := model.TrainHeadOffice{
-		Id:                     0,
-		TrainTitle:             req.TrainTitle,
-		TrainDate:              req.TrainDate,
-		TrainConcreteStartTime: req.TrainConcreteStartTime,
-		TrainConcreteEndTime:   req.TrainConcreteEndTime,
-		CreatedBy:              s.GetCxtUserId(),
-		CreatedName:            s.GetCxtUserName(),
-		CreatedTime:            gtime.Now(),
-	}
-	//service.SetCreatedInfo(ent, s.GetCxtUserId(), s.GetCxtUserName())
-
-	e := s.Dao.Transaction(s.Ctx, func(ctx context.Context, tx *gdb.TX) error {
-		id, err := s.Dao.TX(tx).InsertAndGetId(ent)
-		if err != nil {
-			return myerrors.TipsError("提取方案创建失败,请联系管理员")
-		}
-		//CreateSetting := make([]*model.TrainHeadOfficeFeedback, 0)
-		DetailList := make([]*model.TrainHeadOfficeFeedbackDetail, 0)
-		for _, feedBack := range req.FeedbackList {
-			TrainHeadSetting := model.TrainHeadOfficeFeedback{
-				TrainId:     int(id),
-				SaleId:      feedBack.Sale.SaleId,
-				SaleName:    feedBack.Sale.SaleName,
-				CreatedBy:   s.GetCxtUserId(),
-				CreatedName: s.GetCxtUserName(),
-				CreatedTime: gtime.Now(),
-			}
-			//CreateSetting = append(CreateSetting, &TrainHeadSetting)
-			settingId, err := s.FeedDao.TX(tx).InsertAndGetId(TrainHeadSetting)
-			if err != nil {
-				return myerrors.TipsError("提取方案创建失败,请联系管理员")
-			}
-			for _, Dis := range feedBack.DistributorList {
-				detail := model.TrainHeadOfficeFeedbackDetail{
-					MainId:          int(settingId),
-					DistributorId:   Dis.DistributorId,
-					DistributorName: Dis.DistributorName,
-					CreatedBy:       s.GetCxtUserId(),
-					CreatedName:     s.GetCxtUserName(),
-					CreatedTime:     gtime.Now(),
-				}
-				DetailList = append(DetailList, &detail)
-
-			}
-			_, err = s.DetailDao.TX(tx).Insert(DetailList)
-			if err != nil {
-				return myerrors.TipsError("提取方案创建失败,请联系管理员")
-			}
-
-		}
-
-		if err != nil {
-			return myerrors.TipsError("提取方案创建失败,请联系管理员")
-		}
-		return nil
-	})
-
-	return e
-}
-
-func (s *trainHeadService) UpdateById(req *model.UpdateTrainHead) error {
-
-	ent := model.TrainHeadOffice{}
-	err := s.Dao.WherePri(req.Id).Scan(&ent)
-	if err == sql.ErrNoRows {
-		return myerrors.TipsError("该培训工单不存在")
-	}
-	if err != nil {
-		return err
-	}
-
-	updateMap := g.Map{
-		s.Dao.C.TrainTitle:             req.TrainTitle,
-		s.Dao.C.TrainDate:              req.TrainDate,
-		s.Dao.C.TrainConcreteStartTime: req.TrainConcreteStartTime,
-		s.Dao.C.TrainConcreteEndTime:   req.TrainConcreteEndTime,
-		s.Dao.C.UpdatedBy:              s.GetCxtUserId(),
-		s.Dao.C.UpdatedName:            s.GetCxtUserName(),
-		s.Dao.C.UpdatedTime:            gtime.Now(),
-	}
-	e := s.Dao.Transaction(s.Ctx, func(ctx context.Context, tx *gdb.TX) error {
-		_, err = s.Dao.Ctx(ctx).TX(tx).Data(updateMap).WherePri(req.Id).FieldsEx(service.UpdateFieldEx...).Update()
-		if err != nil {
-			return myerrors.TipsError("修改培训工单失败")
-		}
-		for _, feedBack := range req.FeedbackList {
-			switch feedBack.Operate {
-			case "10":
-				TrainHeadSetting := model.TrainHeadOfficeFeedback{
-					TrainId:     int(req.Id),
-					SaleId:      feedBack.Sale.SaleId,
-					SaleName:    feedBack.Sale.SaleName,
-					CreatedBy:   s.GetCxtUserId(),
-					CreatedName: s.GetCxtUserName(),
-					CreatedTime: gtime.Now(),
-				}
-				//service.SetCreatedInfo(TrainHeadSetting, s.GetCxtUserId(), s.GetCxtUserName())
-				DetailList := make([]*model.TrainHeadOfficeFeedbackDetail, 0)
-				//CreateSetting = append(CreateSetting, &TrainHeadSetting)
-				settingId, err := s.FeedDao.TX(tx).InsertAndGetId(TrainHeadSetting)
-				//CreateSetting := make([]*model.TrainHeadOfficeFeedback, 0)
-				for _, Dis := range feedBack.DistributorList {
-					detail := model.TrainHeadOfficeFeedbackDetail{
-						MainId:          int(settingId),
-						DistributorId:   Dis.DistributorId,
-						DistributorName: Dis.DistributorName,
-						CreatedBy:       s.GetCxtUserId(),
-						CreatedName:     s.GetCxtUserName(),
-						CreatedTime:     gtime.Now(),
-					}
-					//service.SetCreatedInfo(detail, s.GetCxtUserId(), s.GetCxtUserName())
-					DetailList = append(DetailList, &detail)
-
-				}
-				_, err = s.DetailDao.TX(tx).Insert(DetailList)
-				if err != nil {
-					return myerrors.TipsError("培训工单修改失败")
-				}
-
-			case "20":
-
-				_, err = s.FeedDao.Ctx(ctx).TX(tx).Data(g.Map{
-					s.FeedDao.C.SaleId:   feedBack.Sale.SaleId,
-					s.FeedDao.C.SaleName: feedBack.Sale.SaleId,
-					s.Dao.C.UpdatedBy:    s.GetCxtUserId(),
-					s.Dao.C.UpdatedName:  s.GetCxtUserName(),
-					s.Dao.C.UpdatedTime:  gtime.Now(),
-				}).WherePri(feedBack.Id).FieldsEx(service.UpdateFieldEx...).Update()
-				_, err = s.DetailDao.TX(tx).Where(s.DetailDao.C.MainId, feedBack.Id).Delete()
-				if err != nil {
-					return myerrors.TipsError("培训工单修改失败")
-				}
-				DetailList := make([]*model.TrainHeadOfficeFeedbackDetail, 0)
-				for _, Dis := range feedBack.DistributorList {
-					detail := model.TrainHeadOfficeFeedbackDetail{
-						MainId:          int(feedBack.Id),
-						DistributorId:   Dis.DistributorId,
-						DistributorName: Dis.DistributorName,
-						CreatedBy:       s.GetCxtUserId(),
-						CreatedName:     s.GetCxtUserName(),
-						CreatedTime:     gtime.Now(),
-					}
-					DetailList = append(DetailList, &detail)
-
-				}
-				_, err = s.DetailDao.TX(tx).Insert(DetailList)
-
-				if err != nil {
-					return myerrors.TipsError("培训工单修改失败")
-				}
-
-			case "30":
-				_, err := s.FeedDao.Ctx(ctx).TX(tx).WherePri(feedBack.Id).Delete()
-				if err != nil {
-					return myerrors.TipsError("培训工单修改失败")
-				}
-			}
-
-		}
-		return nil
-	})
-
-	return e
-}
-func (s *trainHeadService) FeedBackTrain(req *model.FeedBackTrainReq) error {
-	for _, feedback := range req.FeedBackTrainList {
-		_, err := s.DetailDao.Data(g.Map{
-			s.DetailDao.C.TrainingPersNum:     feedback.TrainingPersNum,
-			s.DetailDao.C.DistributorFeedback: feedback.DistributorFeedback,
-			s.Dao.C.UpdatedBy:                 s.GetCxtUserId(),
-			s.Dao.C.UpdatedName:               s.GetCxtUserName(),
-			s.Dao.C.UpdatedTime:               gtime.Now(),
-		}).FieldsEx(service.UpdateFieldEx...).WherePri(feedback.Id).Update()
-		if err != nil {
-			return myerrors.TipsError("培训工单反馈提交失败,请稍后重试")
-		}
-	}
-
-	return nil
-}
-
-func (s *trainHeadService) DeleteByIds(ids []int64) error {
-	if len(ids) == 0 {
-		return nil
-	}
-	e := s.Dao.Transaction(s.Ctx, func(ctx context.Context, tx *gdb.TX) error {
-		_, err := s.Dao.Ctx(ctx).WhereIn(s.Dao.C.Id, ids).Delete()
-		if err != nil {
-			return myerrors.TipsError("培训工单删除失败,请稍后重试")
-		}
-		_, err = s.FeedDao.Ctx(ctx).TX(tx).WhereIn(s.FeedDao.C.TrainId, ids).Delete()
-		if err != nil {
-			return myerrors.TipsError("培训工单删除失败,请稍后重试")
-		}
-
-		return nil
-	})
-
-	return e
-}

+ 310 - 0
opms_parent/app/service/train/train_head_office.go

@@ -0,0 +1,310 @@
+package train
+
+import (
+	"context"
+	projDao "dashoo.cn/micro/app/dao/train"
+	model "dashoo.cn/micro/app/model/train"
+	"dashoo.cn/micro/app/service"
+	"dashoo.cn/opms_libary/myerrors"
+	"database/sql"
+	"github.com/gogf/gf/database/gdb"
+	"github.com/gogf/gf/frame/g"
+	"github.com/gogf/gf/os/gtime"
+)
+
+type trainHeadService struct {
+	*service.ContextService
+	Dao       *projDao.TrainHeadOfficeDao
+	FeedDao   *projDao.TrainHeadOfficeFeedbackDao
+	DetailDao *projDao.TrainHeadOfficeFeedbackDetailDao
+}
+
+func NewtrainHeadService(ctx context.Context) (svc *trainHeadService, err error) {
+	svc = new(trainHeadService)
+	if svc.ContextService, err = svc.Init(ctx); err != nil {
+		return nil, err
+	}
+	svc.Dao = projDao.NewTrainHeadOfficeDao(svc.Tenant)
+	svc.FeedDao = projDao.NewTrainHeadOfficeFeedbackDao(svc.Tenant)
+	svc.DetailDao = projDao.NewTrainHeadOfficeFeedbackDetailDao(svc.Tenant)
+
+	return svc, nil
+}
+
+func (s *trainHeadService) GetList(req *model.SearchTrainHeadReq) (total int, list []*model.SearchTrainHeadRes, err error) {
+	db := s.Dao.Ctx(s.Ctx)
+
+	if req.TrainTitle != "" {
+		db = db.WhereLike(s.Dao.C.TrainTitle, "%"+req.TrainTitle+"%")
+	}
+	//if req.TrainStartDate != nil {
+	//	db = db.Where("train_date >=?", req.TrainStartDate)
+	//}
+	//if req.TrainEndDate != nil {
+	//	db = db.Where("train_date <=?", req.TrainEndDate)
+	//}
+
+	total, err = db.Count()
+	if err != nil {
+		return 0, nil, err
+	}
+
+	err = db.OrderDesc(s.Dao.C.CreatedTime).Page(req.GetPage()).Scan(&list)
+	//if err != nil && err != sql.ErrNoRows {
+	if err != nil {
+
+		return 0, nil, err
+	}
+	return total, list, nil
+}
+
+func (s *trainHeadService) GetEntityById(id int64) (detail *model.TrainHeadDetail, err error) {
+
+	err = s.Dao.WherePri(id).Scan(&detail)
+
+	if err == sql.ErrNoRows {
+		return nil, myerrors.TipsError("工单不存在")
+	}
+	if err != nil {
+		return nil, err
+	}
+	saleList := make([]*model.Sale, 0)
+	err = s.FeedDao.Where(s.FeedDao.C.TrainId, id).Scan(&saleList)
+	if err != nil {
+		return nil, err
+	}
+	feedBackDetailList := make([]*model.FeedbackDetail, 0)
+	err = s.DetailDao.Ctx(s.Ctx).Where(s.DetailDao.C.MainId, id).Scan(&feedBackDetailList)
+	if err != nil {
+		return nil, err
+	}
+
+	detail.SaleList = saleList
+	detail.DistributorList = feedBackDetailList
+
+	return detail, nil
+}
+
+func (s *trainHeadService) GetDetailById(id int64) (detail *model.TrainHeadDetailForFeedBack, err error) {
+
+	err = s.Dao.WherePri(id).Scan(&detail)
+
+	if err == sql.ErrNoRows {
+		return nil, myerrors.TipsError("工单不存在")
+	}
+	if err != nil {
+		return nil, err
+	}
+	disList := make([]*model.FeedbackDetail, 0)
+	err = s.DetailDao.Ctx(s.Ctx).Where(s.DetailDao.C.MainId, id).Where(s.DetailDao.C.SaleId, s.GetCxtUserId()).Scan(&disList)
+	if err != nil {
+		return nil, err
+	}
+
+	detail.DistributorList = disList
+
+	return detail, nil
+}
+
+func (s *trainHeadService) Create(req *model.CreateTrainHead) (err error) {
+
+	ent := model.TrainHeadOffice{
+		Id:                     0,
+		TrainTitle:             req.TrainTitle,
+		TrainDate:              req.TrainDate,
+		TrainConcreteStartTime: req.TrainConcreteStartTime,
+		TrainConcreteEndTime:   req.TrainConcreteEndTime,
+		CreatedBy:              s.GetCxtUserId(),
+		CreatedName:            s.GetCxtUserName(),
+		CreatedTime:            gtime.Now(),
+	}
+	//service.SetCreatedInfo(ent, s.GetCxtUserId(), s.GetCxtUserName())
+
+	e := s.Dao.Transaction(s.Ctx, func(ctx context.Context, tx *gdb.TX) error {
+		id, err := s.Dao.TX(tx).InsertAndGetId(ent)
+		if err != nil {
+			return myerrors.TipsError("提取方案创建失败,请联系管理员")
+		}
+		createSaleList := make([]*model.TrainHeadOfficeFeedback, 0)
+		DetailList := make([]*model.TrainHeadOfficeFeedbackDetail, 0)
+		for _, sale := range req.SaleList {
+			createSale := model.TrainHeadOfficeFeedback{
+				TrainId:     int(id),
+				SaleId:      sale.SaleId,
+				SaleName:    sale.SaleName,
+				CreatedBy:   s.GetCxtUserId(),
+				CreatedName: s.GetCxtUserName(),
+				CreatedTime: gtime.Now(),
+			}
+			createSaleList = append(createSaleList, &createSale)
+		}
+
+		for _, distributor := range req.DistributorList {
+			detail := model.TrainHeadOfficeFeedbackDetail{
+				MainId:          int(id),
+				SaleId:          distributor.SaleId,
+				SaleName:        distributor.SaleName,
+				DistributorId:   distributor.DistributorId,
+				DistributorName: distributor.DistributorName,
+				CreatedBy:       s.GetCxtUserId(),
+				CreatedName:     s.GetCxtUserName(),
+				CreatedTime:     gtime.Now(),
+			}
+			DetailList = append(DetailList, &detail)
+
+		}
+		_, err = s.FeedDao.Ctx(s.Ctx).InsertAndGetId(createSaleList)
+		if err != nil {
+			return myerrors.TipsError("提取方案创建失败,请联系管理员")
+		}
+
+		_, err = s.DetailDao.Ctx(s.Ctx).InsertAndGetId(DetailList)
+		if err != nil {
+			return myerrors.TipsError("提取方案创建失败,请联系管理员")
+		}
+		return nil
+	})
+
+	return e
+}
+
+// func (s *trainHeadService) UpdateById(req *model.UpdateTrainHead) error {
+//
+//		ent := model.TrainHeadOffice{}
+//		err := s.Dao.WherePri(req.Id).Scan(&ent)
+//		if err == sql.ErrNoRows {
+//			return myerrors.TipsError("该培训工单不存在")
+//		}
+//		if err != nil {
+//			return err
+//		}
+//
+//		updateMap := g.Map{
+//			s.Dao.C.TrainTitle:             req.TrainTitle,
+//			s.Dao.C.TrainDate:              req.TrainDate,
+//			s.Dao.C.TrainConcreteStartTime: req.TrainConcreteStartTime,
+//			s.Dao.C.TrainConcreteEndTime:   req.TrainConcreteEndTime,
+//			s.Dao.C.UpdatedBy:              s.GetCxtUserId(),
+//			s.Dao.C.UpdatedName:            s.GetCxtUserName(),
+//			s.Dao.C.UpdatedTime:            gtime.Now(),
+//		}
+//		e := s.Dao.Transaction(s.Ctx, func(ctx context.Context, tx *gdb.TX) error {
+//			_, err = s.Dao.Ctx(ctx).TX(tx).Data(updateMap).WherePri(req.Id).FieldsEx(service.UpdateFieldEx...).Update()
+//			if err != nil {
+//				return myerrors.TipsError("修改培训工单失败")
+//			}
+//			for _, feedBack := range req.FeedbackList {
+//				switch feedBack.Operate {
+//				case "10":
+//					TrainHeadSetting := model.TrainHeadOfficeFeedback{
+//						TrainId:     int(req.Id),
+//						SaleId:      feedBack.Sale.SaleId,
+//						SaleName:    feedBack.Sale.SaleName,
+//						CreatedBy:   s.GetCxtUserId(),
+//						CreatedName: s.GetCxtUserName(),
+//						CreatedTime: gtime.Now(),
+//					}
+//					//service.SetCreatedInfo(TrainHeadSetting, s.GetCxtUserId(), s.GetCxtUserName())
+//					DetailList := make([]*model.TrainHeadOfficeFeedbackDetail, 0)
+//					//CreateSetting = append(CreateSetting, &TrainHeadSetting)
+//					settingId, err := s.FeedDao.TX(tx).InsertAndGetId(TrainHeadSetting)
+//					//CreateSetting := make([]*model.TrainHeadOfficeFeedback, 0)
+//					for _, Dis := range feedBack.DistributorList {
+//						detail := model.TrainHeadOfficeFeedbackDetail{
+//							MainId:          int(settingId),
+//							DistributorId:   Dis.DistributorId,
+//							DistributorName: Dis.DistributorName,
+//							CreatedBy:       s.GetCxtUserId(),
+//							CreatedName:     s.GetCxtUserName(),
+//							CreatedTime:     gtime.Now(),
+//						}
+//						//service.SetCreatedInfo(detail, s.GetCxtUserId(), s.GetCxtUserName())
+//						DetailList = append(DetailList, &detail)
+//
+//					}
+//					_, err = s.DetailDao.TX(tx).Insert(DetailList)
+//					if err != nil {
+//						return myerrors.TipsError("培训工单修改失败")
+//					}
+//
+//				case "20":
+//
+//					_, err = s.FeedDao.Ctx(ctx).TX(tx).Data(g.Map{
+//						s.FeedDao.C.SaleId:   feedBack.Sale.SaleId,
+//						s.FeedDao.C.SaleName: feedBack.Sale.SaleId,
+//						s.Dao.C.UpdatedBy:    s.GetCxtUserId(),
+//						s.Dao.C.UpdatedName:  s.GetCxtUserName(),
+//						s.Dao.C.UpdatedTime:  gtime.Now(),
+//					}).WherePri(feedBack.Id).FieldsEx(service.UpdateFieldEx...).Update()
+//					_, err = s.DetailDao.TX(tx).Where(s.DetailDao.C.MainId, feedBack.Id).Delete()
+//					if err != nil {
+//						return myerrors.TipsError("培训工单修改失败")
+//					}
+//					DetailList := make([]*model.TrainHeadOfficeFeedbackDetail, 0)
+//					for _, Dis := range feedBack.DistributorList {
+//						detail := model.TrainHeadOfficeFeedbackDetail{
+//							MainId:          int(feedBack.Id),
+//							DistributorId:   Dis.DistributorId,
+//							DistributorName: Dis.DistributorName,
+//							CreatedBy:       s.GetCxtUserId(),
+//							CreatedName:     s.GetCxtUserName(),
+//							CreatedTime:     gtime.Now(),
+//						}
+//						DetailList = append(DetailList, &detail)
+//
+//					}
+//					_, err = s.DetailDao.TX(tx).Insert(DetailList)
+//
+//					if err != nil {
+//						return myerrors.TipsError("培训工单修改失败")
+//					}
+//
+//				case "30":
+//					_, err := s.FeedDao.Ctx(ctx).TX(tx).WherePri(feedBack.Id).Delete()
+//					if err != nil {
+//						return myerrors.TipsError("培训工单修改失败")
+//					}
+//				}
+//
+//			}
+//			return nil
+//		})
+//
+//		return e
+//	}
+func (s *trainHeadService) FeedBackTrain(req *model.FeedBackTrainReq) error {
+	for _, feedback := range req.FeedBackTrainList {
+		_, err := s.DetailDao.Data(g.Map{
+			s.DetailDao.C.TrainingPersNum:     feedback.TrainingPersNum,
+			s.DetailDao.C.DistributorFeedback: feedback.DistributorFeedback,
+			s.Dao.C.UpdatedBy:                 s.GetCxtUserId(),
+			s.Dao.C.UpdatedName:               s.GetCxtUserName(),
+			s.Dao.C.UpdatedTime:               gtime.Now(),
+		}).FieldsEx(service.UpdateFieldEx...).WherePri(feedback.Id).Update()
+		if err != nil {
+			return myerrors.TipsError("培训工单反馈提交失败,请稍后重试")
+		}
+	}
+
+	return nil
+}
+
+func (s *trainHeadService) DeleteByIds(ids []int64) error {
+	if len(ids) == 0 {
+		return nil
+	}
+	e := s.Dao.Transaction(s.Ctx, func(ctx context.Context, tx *gdb.TX) error {
+		_, err := s.Dao.Ctx(ctx).WhereIn(s.Dao.C.Id, ids).Delete()
+		if err != nil {
+			return myerrors.TipsError("培训工单删除失败,请稍后重试")
+		}
+		_, err = s.FeedDao.Ctx(ctx).TX(tx).WhereIn(s.FeedDao.C.TrainId, ids).Delete()
+		if err != nil {
+			return myerrors.TipsError("培训工单删除失败,请稍后重试")
+		}
+
+		return nil
+	})
+
+	return e
+}

+ 1 - 1
opms_parent/main.go

@@ -77,7 +77,7 @@ func main() {
 	s.RegisterName("ContractReport", new(contract.ContractReportHandler), "")
 	s.RegisterName("BusinessReport", new(projHandler.BusinessReportHandler), "")
 	s.RegisterName("ProductConsultRecord", new(cust.ProductConsultRecordHandler), "")
-	s.RegisterName("TrainHead", new(projHandler.TrainHeadHander), "")
+	s.RegisterName("TrainHead", new(train.TrainHeadHander), "")
 	s.RegisterName("SaleApply", new(train.SaleApplyHandler), "")
 	s.RegisterName("SaleApplySummary", new(train.SaleApplySummaryHandler), "")
 	s.RegisterName("SaleTarget", new(contract.TargetHandler), "")