Quellcode durchsuchen

feature(工单): 到货提醒

lk vor 2 Jahren
Ursprung
Commit
b0a460e887

+ 0 - 1
opms_parent/app/service/plat/plat_task_cron.go

@@ -84,7 +84,6 @@ func (c taskCron) Run() {
 					remindTime := gtime.NewFromStr(fmt.Sprintf("%v %v:%v:%v", now.Format("Y-m-d"), rules[2], rules[1], rules[0]))
 					// 10分钟一次定时循环,两者相差在10分钟之内(纳秒转换1e9)
 					if (now.Nanosecond()-remindTime.Nanosecond())/(1*60*1e9) <= 10 && now.Nanosecond() > remindTime.Nanosecond() {
-
 						taskNotifyMessage(task.MainUserId, task.OwnerUserId, TaskTitle+"督办需要处理,请前往执行")
 					}
 				} else if rules[3] == "?" { // 每周提醒

+ 72 - 0
opms_parent/app/service/work/deliver_order_cron.go

@@ -0,0 +1,72 @@
+package work
+
+import (
+	"dashoo.cn/micro/app/service"
+	"database/sql"
+	"fmt"
+	"github.com/gogf/gf/frame/g"
+	"github.com/gogf/gf/os/glog"
+	"github.com/gogf/gf/os/gtime"
+	"github.com/gogf/gf/util/gconv"
+	"github.com/robfig/cron"
+)
+
+// 初始化,创建每10分钟执行一次的定时任务
+func init() {
+	// 定时任务
+	c := cron.New()
+	spec := "1 0/10 * * * ?" // 每天10分钟执行一次
+
+	if err := c.AddJob(spec, deliverOrderProgressCron{}); err != nil {
+		glog.Error(err)
+	}
+	c.Start()
+}
+
+// 交接任务单定时任务定义
+type deliverOrderProgressCron struct {
+}
+
+// Run 交接任务单定时任务逻辑
+func (c deliverOrderProgressCron) Run() {
+	tenant := g.Config().GetString("micro_srv.tenant")
+	if tenant == "" {
+		glog.Error("交接任务单定时任务租户码未设置,请前往配置")
+		return
+	}
+	// 当前时间
+	now := gtime.Now()
+	// 获取发货任务单中的预计到货时间
+	progress, err := g.DB(tenant).Model("deliver_order o").InnerJoin("deliver_order_imp_progress p", "o.id=p.deliver_order_id").InnerJoin("proj_business b", "b.id=o.project_id").Where(fmt.Sprintf("p.progress_type='10' AND p.progress_status='20' AND p.estimated_arrival_time<='%v'", now.Format("Y-m-d H:i:s"))).Group("p.id").Fields("p.*,b.sale_id").FindAll()
+	if err != nil && err != sql.ErrNoRows {
+		glog.Error(err)
+		return
+	}
+	for _, p := range progress {
+		// 校验当前时间
+		remindTime := p["estimated_arrival_time"].GTime()
+		// 10分钟一次定时循环,两者相差在10分钟之内(纳秒转换1e9)
+		if (now.Nanosecond()-remindTime.Nanosecond())/(1*60*1e9) <= 10 {
+			ids := gconv.String(p["principal_person_id"])
+			if gconv.String(p["sale_id"]) != gconv.String(p["principal_person_id"]) {
+				ids += "," + gconv.String(p["sale_id"])
+			}
+			notifyMessage(ids, "您的产品已经到达,请尽快进行产品验收")
+		}
+	}
+}
+
+// notifyMessage 发送消息通知
+func notifyMessage(ids, message string) {
+	msg := g.MapStrStr{
+		"msgTitle":    "到货验收提醒",
+		"msgContent":  fmt.Sprintf("<p>%v</p>", message),
+		"msgType":     "20",
+		"recvUserIds": ids,
+		"msgStatus":   "10",
+		"sendType":    "10",
+	}
+	if err := service.CreateSystemMessage(msg); err != nil {
+		glog.Error("消息提醒异常:", err)
+	}
+}