Browse Source

feature: 公告优化、新增及转化项目报表优化

liuyaqi 2 năm trước cách đây
mục cha
commit
365fed4880

+ 18 - 5
opms_admin/app/service/sys_message.go

@@ -2,20 +2,22 @@ package service
 
 import (
 	"context"
+	"fmt"
+	"strings"
+
 	"dashoo.cn/micro/app/dao"
 	"dashoo.cn/micro/app/model"
-	"fmt"
 	"github.com/gogf/gf/container/gset"
 	"github.com/gogf/gf/frame/g"
 	"github.com/gogf/gf/os/gtime"
 	"github.com/gogf/gf/util/gconv"
-	"strings"
 )
 
 type MessageService struct {
 	*contextService
-	Dao    *dao.SysMessageDao
-	logDao *dao.SysMessageLogDao
+	Dao     *dao.SysMessageDao
+	logDao  *dao.SysMessageLogDao
+	userDao *dao.SysUserDao
 }
 
 func NewMessageService(ctx context.Context) (svc *MessageService, err error) {
@@ -25,6 +27,7 @@ func NewMessageService(ctx context.Context) (svc *MessageService, err error) {
 	}
 	svc.Dao = dao.NewSysMessageDao(svc.Tenant)
 	svc.logDao = dao.NewSysMessageLogDao(svc.Tenant)
+	svc.userDao = dao.NewSysUserDao(svc.Tenant)
 	return svc, nil
 }
 
@@ -66,7 +69,7 @@ func (s *MessageService) GetListByUser(req *model.SysMessageSearchReq) (total in
 	if err != nil {
 		return
 	}
-	err = m.Page(req.GetPage()).Fields("msg.*,log.is_read,log.read_time").OrderDesc(s.Dao.C.CreatedTime).Scan(&list)
+	err = m.Page(req.GetPage()).Fields("msg.*,log.is_read,log.read_time").Order("log.is_read, msg.created_time DESC").Scan(&list)
 	if err != nil {
 		return
 	}
@@ -106,6 +109,16 @@ func (s *MessageService) Create(req *model.CreateSysMessageReq) (err error) {
 		return nil
 	}
 	userIds = gset.NewStrSetFrom(userIds).Slice()
+	// 如果 msgType 为公告,并且没有指定 userIds 则向所有人发送通知
+	if data.RecvUserIds == "" && data.MsgType == "10" && data.SendType == "10" {
+		v, err := s.userDao.Fields("id").Array()
+		if err != nil {
+			return err
+		}
+		for _, i := range v {
+			userIds = append(userIds, i.String())
+		}
+	}
 	for _, userId := range userIds {
 		if userId == "" {
 			continue

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

@@ -2,6 +2,11 @@ package home
 
 import (
 	"context"
+	"database/sql"
+	"fmt"
+	"math"
+	"time"
+
 	contDao "dashoo.cn/micro/app/dao/contract"
 	platDao "dashoo.cn/micro/app/dao/plat"
 	projDao "dashoo.cn/micro/app/dao/proj"
@@ -13,14 +18,10 @@ import (
 	projSrv "dashoo.cn/micro/app/service/proj"
 	"dashoo.cn/opms_libary/micro_srv"
 	"dashoo.cn/opms_libary/myerrors"
-	"database/sql"
-	"fmt"
 	"github.com/gogf/gf/database/gdb"
 	"github.com/gogf/gf/frame/g"
 	"github.com/gogf/gf/os/gtime"
 	"github.com/gogf/gf/util/gconv"
-	"math"
-	"time"
 )
 
 // getPersonalContractReportData 获取个人数据
@@ -516,7 +517,19 @@ func (s *HomeService) getNewAndConvertBusiness(productLine []string, params *map
 	}
 	currentTime := gtime.Now()
 	weekStart, weekEnd := currentTime.StartOfWeek(), currentTime.EndOfWeek()
-	monthStart, monthEnd := currentTime.StartOfMonth(), currentTime.EndOfMonth()
+	// monthStart, monthEnd := currentTime.StartOfMonth(), currentTime.EndOfMonth()
+
+	monthStr, ok := (*params)["month"]
+	if !ok {
+		return nil, myerrors.TipsError("请求查询类型参数传递错误")
+	}
+	m := gconv.Int(monthStr)
+	now := time.Now()
+	firstOfMonth := time.Date(now.Year(), time.Month(m), 1, 0, 0, 0, 0, now.Location()) // 获取本月的第一天
+	lastOfMonth := firstOfMonth.AddDate(0, 1, -1)                                       // 获取本月的最后一天
+	l, _ := time.LoadLocation("Asia/Shanghai")
+	startTime, _ := time.ParseInLocation("2006-01-02", firstOfMonth.Format("2006-01-02"), l)
+	endTime, _ := time.ParseInLocation("2006-01-02", lastOfMonth.Format("2006-01-02"), l)
 
 	businessDao := projDao.NewProjBusinessDao(s.Tenant)
 	busDynamicsDao := projDao.NewProjBusinessDynamicsDao(s.Tenant)
@@ -530,7 +543,7 @@ func (s *HomeService) getNewAndConvertBusiness(productLine []string, params *map
 			err = commonDb.WhereGTE(businessDao.C.FilingTime, weekStart).WhereLTE(businessDao.C.FilingTime, weekEnd).Scan(&addCount)
 		}
 		if searchType == "month" {
-			err = commonDb.WhereGTE(businessDao.C.FilingTime, monthStart).WhereLTE(businessDao.C.FilingTime, monthEnd).Scan(&addCount)
+			err = commonDb.WhereGTE(businessDao.C.FilingTime, startTime).WhereLTE(businessDao.C.FilingTime, endTime).Scan(&addCount)
 		}
 		return addCount, err
 	}
@@ -548,7 +561,7 @@ func (s *HomeService) getNewAndConvertBusiness(productLine []string, params *map
 			err = commonDb.WhereGTE("contract."+contractDao.C.CreatedTime, weekStart).WhereLTE("contract."+contractDao.C.CreatedTime, weekEnd).Scan(&signCount)
 		}
 		if searchType == "month" {
-			err = commonDb.WhereGTE("contract."+contractDao.C.CreatedTime, monthStart).WhereLTE("contract."+contractDao.C.CreatedTime, monthEnd).Scan(&signCount)
+			err = commonDb.WhereGTE("contract."+contractDao.C.CreatedTime, startTime).WhereLTE("contract."+contractDao.C.CreatedTime, endTime).Scan(&signCount)
 		}
 		return signCount, err
 	}
@@ -566,7 +579,7 @@ func (s *HomeService) getNewAndConvertBusiness(productLine []string, params *map
 			err = commonDb.WhereGTE("dy."+busDynamicsDao.C.CreatedTime, weekStart).WhereLTE("dy."+busDynamicsDao.C.CreatedTime, weekEnd).Scan(&convertData)
 		}
 		if searchType == "month" {
-			err = commonDb.WhereGTE("dy."+busDynamicsDao.C.CreatedTime, monthStart).WhereLTE("dy."+busDynamicsDao.C.CreatedTime, monthEnd).Scan(&convertData)
+			err = commonDb.WhereGTE("dy."+busDynamicsDao.C.CreatedTime, startTime).WhereLTE("dy."+busDynamicsDao.C.CreatedTime, endTime).Scan(&convertData)
 		}
 		return convertData, err
 	}

+ 1 - 1
opms_parent/schema/function.sql

@@ -25,7 +25,7 @@ END $
 DELIMITER ;
 
 alter table plat_sequence add `year` int(11) DEFAULT NULL COMMENT '年份' after increment;
-update plat_sequence set year=2023,current_value=50  where name = 'contract_code'
+update plat_sequence set year=2023,current_value=49  where name = 'contract_code'
 
 DROP FUNCTION IF EXISTS next_year_reset_val;
 DELIMITER $