|
|
@@ -2,16 +2,19 @@ package service
|
|
|
|
|
|
import (
|
|
|
"context"
|
|
|
+ "dashoo.cn/micro/app/dao/plat"
|
|
|
"dashoo.cn/micro/app/dao/work"
|
|
|
"dashoo.cn/micro/app/model/sys_report"
|
|
|
"dashoo.cn/micro/app/service"
|
|
|
"database/sql"
|
|
|
"github.com/gogf/gf/errors/gerror"
|
|
|
"github.com/gogf/gf/os/glog"
|
|
|
+ "strings"
|
|
|
)
|
|
|
|
|
|
type WorkOrderService struct {
|
|
|
- Dao *work.WorkOrderDao
|
|
|
+ Dao *work.WorkOrderDao
|
|
|
+ PlatDao *plat.PlatFollowupDao
|
|
|
*service.ContextService
|
|
|
}
|
|
|
|
|
|
@@ -21,6 +24,7 @@ func NewWorkOrderService(ctx context.Context) (svc *WorkOrderService, err error)
|
|
|
return nil, err
|
|
|
}
|
|
|
svc.Dao = work.NewWorkOrderDao(svc.Tenant)
|
|
|
+ svc.PlatDao = plat.NewPlatFollowupDao(svc.Tenant)
|
|
|
return svc, nil
|
|
|
}
|
|
|
|
|
|
@@ -105,7 +109,47 @@ func (s WorkOrderService) GetSupportWorkOrderReportList(month string) (list []*s
|
|
|
return list, nil
|
|
|
}
|
|
|
|
|
|
-// GetSaleWorkLoadReportList 查询工作量统计
|
|
|
-//func (s WorkOrderService) GetSupportWorkOrderReportList(month string) (list []*sys_report.WorkerOrderRtn, err error) {
|
|
|
-//
|
|
|
-//}
|
|
|
+// GetSaleWorkOrderReportList 销售工作量统计
|
|
|
+func (s WorkOrderService) GetSupportWorkLoadReportList(req *sys_report.SearchWorkLoadData) (list []*sys_report.WorkLoadRtn, err error) {
|
|
|
+ date := req.Month
|
|
|
+ db := s.PlatDao
|
|
|
+
|
|
|
+ if req.DateType == "day" {
|
|
|
+ date = date[0:10]
|
|
|
+ db.Fields(s.PlatDao.C.CreatedBy, s.PlatDao.C.CreatedName, "SUM(CASE WHEN follow_type = 30 THEN 1 ELSE 0 END) AS VisitCount",
|
|
|
+ "SUM(CASE WHEN follow_type != 30 THEN 1 ELSE 0 END) AS OtherCount", " count(follow_type) as TotalCount").Where(s.PlatDao.C.FollowDate, date).Group(s.PlatDao.C.CreatedBy).Scan(&list)
|
|
|
+ } else if req.DateType == "week" {
|
|
|
+ dateArray := strings.Split(req.Month, ",")
|
|
|
+ dateStart := dateArray[0]
|
|
|
+ dateEnd := dateArray[1]
|
|
|
+ dateEnd = dateEnd[0:10] + " 23:59:59"
|
|
|
+ db.Fields(s.PlatDao.C.CreatedBy, s.PlatDao.C.CreatedName, "SUM(CASE WHEN follow_type = 30 THEN 1 ELSE 0 END) AS VisitCount",
|
|
|
+ "SUM(CASE WHEN follow_type != 30 THEN 1 ELSE 0 END) AS OtherCount", " count(follow_type) as TotalCount").WhereGTE(s.PlatDao.C.FollowDate, dateStart).WhereLTE(s.PlatDao.C.FollowDate, dateEnd).Group(s.PlatDao.C.CreatedBy).Scan(&list)
|
|
|
+ } else if req.DateType == "month" {
|
|
|
+ date = date[0:7]
|
|
|
+ db.Fields(s.PlatDao.C.CreatedBy, s.PlatDao.C.CreatedName, "SUM(CASE WHEN follow_type = 30 THEN 1 ELSE 0 END) AS VisitCount",
|
|
|
+ "SUM(CASE WHEN follow_type != 30 THEN 1 ELSE 0 END) AS OtherCount", " count(follow_type) as TotalCount").WhereLike(s.PlatDao.C.FollowDate, "%"+date+"%").Group(s.PlatDao.C.CreatedBy).Scan(&list)
|
|
|
+ }
|
|
|
+
|
|
|
+ if err != nil && err != sql.ErrNoRows {
|
|
|
+ glog.Error("查询跟进表数据发生错误!")
|
|
|
+ return list, gerror.New("数据处理发生错误!")
|
|
|
+ }
|
|
|
+ // 获取销售数据
|
|
|
+ userList, err := service.GetUserListByRoleCode(s.Ctx, []string{"SalesEngineer", "ProductLineManager"}, 1000)
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ if len(list) > 0 {
|
|
|
+ for i := 0; i < len(list); i++ {
|
|
|
+ userId := list[i].CreatedBy
|
|
|
+ for j := 0; j < len(userList); j++ {
|
|
|
+ if userId == userList[j]["Id"] {
|
|
|
+ list[i].CreatedName = userList[j]["NickName"].(string)
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return list, nil
|
|
|
+}
|