Преглед изворни кода

添加预发机过期未申请提醒

lcl пре 1 година
родитељ
комит
31c5cc4268
2 измењених фајлова са 93 додато и 0 уклоњено
  1. 92 0
      AppStart/Helper/PrePosRingService.cs
  2. 1 0
      Startup.cs

+ 92 - 0
AppStart/Helper/PrePosRingService.cs

@@ -0,0 +1,92 @@
+using System;
+using System.Collections.Generic;
+using Library;
+using LitJson;
+using System.Linq;
+using System.Data;
+using System.Threading;
+using MySystem.PxcModels;
+
+namespace MySystem
+{
+    public class PrePosRingService
+    {
+        public readonly static PrePosRingService Instance = new PrePosRingService();
+        private PrePosRingService()
+        { }
+
+        public void Start()
+        {
+            Thread th = new Thread(dosomething);
+            th.IsBackground = true;
+            th.Start();
+        }
+
+        public void dosomething()
+        {
+            while (true)
+            {
+                try
+                {
+                    if(DateTime.Now.Hour > 3 && DateTime.Now.Hour < 19)
+                    {
+                        string chk = function.ReadInstance("/PrePosRing/" + DateTime.Now.ToString("yyyyMMdd") + ".txt");
+                        if(string.IsNullOrEmpty(chk))
+                        {
+                            function.WritePage("/PrePosRing/", "" + DateTime.Now.ToString("yyyyMMdd") + ".txt", DateTime.Now.ToString());
+                            PrePosRing();
+                            PrePosRingForExpired();
+                        }
+                    }
+                }
+                catch (Exception ex)
+                {                        
+                    function.WriteLog(DateTime.Now.ToString() + "\r\n" + ex.ToString(), "预发机提醒异常");
+                }
+                Thread.Sleep(300000);
+            }
+        }
+
+        private void PrePosRing()
+        {
+            WebCMSEntities db = new WebCMSEntities();
+            DateTime start = DateTime.Parse(DateTime.Now.AddDays(-29).ToString("yyyy-MM-dd") + " 00:00:00");
+            DateTime end = DateTime.Parse(DateTime.Now.AddDays(-24).ToString("yyyy-MM-dd") + " 00:00:00");
+            var PrePosList = db.PreSendStockDetail.Where(m => m.ApplyFlag == 0 && m.CreateDate >= start && m.CreateDate < end && m.Status >= 0 && m.Status <= 1).ToList();
+            foreach(var Pos in PrePosList)
+            {
+                Dictionary<string, string> Item = new Dictionary<string, string>();
+                Item.Add("SnNo", Pos.SnNo);
+                Item.Add("PreDate", Pos.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss"));
+                string value = Newtonsoft.Json.JsonConvert.SerializeObject(Item);
+
+                RedisDbconn.Instance.AddList("PrePosRing:" + DateTime.Now.ToString("yyyyMMdd") + ":" + Pos.ToUserId, value);
+                int ExpireTime = 60 * 60 * 25;
+                RedisDbconn.Instance.SetExpire("PrePosRing:" + DateTime.Now.ToString("yyyyMMdd") + ":" + Pos.ToUserId, ExpireTime);
+            }
+            db.Dispose();
+        }
+
+        private void PrePosRingForExpired()
+        {
+            if(DateTime.Now.Day >= 15 && DateTime.Now.Day < 20)
+            {
+                WebCMSEntities db = new WebCMSEntities();
+                DateTime end = DateTime.Parse(DateTime.Now.AddDays(-29).ToString("yyyy-MM-dd") + " 00:00:00");
+                var PrePosList = db.PreSendStockDetail.Where(m => m.ApplyFlag == 0 && m.CreateDate < end && m.Status >= 0 && m.Status <= 1).ToList();
+                foreach(var Pos in PrePosList)
+                {
+                    Dictionary<string, string> Item = new Dictionary<string, string>();
+                    Item.Add("SnNo", Pos.SnNo);
+                    Item.Add("PreDate", Pos.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss"));
+                    string value = Newtonsoft.Json.JsonConvert.SerializeObject(Item);
+                    
+                    RedisDbconn.Instance.AddList("PrePosRingForExpired:" + DateTime.Now.ToString("yyyyMMdd") + ":" + Pos.ToUserId, value);
+                    int ExpireTime = 60 * 60 * 25;
+                    RedisDbconn.Instance.SetExpire("PrePosRingForExpired:" + DateTime.Now.ToString("yyyyMMdd") + ":" + Pos.ToUserId, ExpireTime);
+                }
+                db.Dispose();
+            }
+        }
+    }
+}

+ 1 - 0
Startup.cs

@@ -202,6 +202,7 @@ namespace MySystem
             ActRewardService.Instance.Start(); //发放激活奖励
             HelpProfitPreMerchantHelper.Instance.Start(); //助利宝每天增加指定数量商机
             AddActService.Instance.Start(); //划拨后检查机具激活状态,并自动补录
+            PrePosRingService.Instance.Start(); //预发未申请提醒
 
             MessageCenterService.Instance.Start(); // 消息队列
             SetFeeFlagService.Instance.Start(); //118天提前通知创客费率调升消息