Przeglądaj źródła

pda绑码、成型报损时写入PLC放行;SAP50烧成同步改为30分钟

chenxy 5 lat temu
rodzic
commit
d2c012e6df

+ 4 - 0
DK.Client/Client.Controls/FormCommon/S_CMN_010.cs

@@ -248,6 +248,10 @@ namespace Dongke.IBOSS.PRD.Client.Controls.FormCommon
         /// <param name="e"></param>
         private void dgvStaff_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
         {
+            if (e.RowIndex < 0 || e.ColumnIndex < 0)
+            {
+                return;
+            }
             try
             {
                 String Staffid = this.dgvStaff.Rows[e.RowIndex].Cells["Staffid"].Value.ToString();

+ 10 - 2
DK.Client/PCModule/F_PC_0103_1.cs

@@ -1178,9 +1178,17 @@ namespace Dongke.IBOSS.PRD.Client.PCModule
 				this._lineEntity.GROUTINGLINECODE = drGrouting["GROUTINGLINECODE"].ToString();
 				this._lineEntity.GROUTINGLINENAME = drGrouting["GROUTINGLINENAME"].ToString();
                 //xuwei add 2019-11-13
-				this._lineEntity.HIGHPRESSUREFLAG = Convert.ToInt32(drGrouting["HIGHPRESSUREFLAG"]);
+                //this._lineEntity.HIGHPRESSUREFLAG = Convert.ToInt32(drGrouting["HIGHPRESSUREFLAG"]);
+                if (drGrouting["HIGHPRESSUREFLAG"] == DBNull.Value)
+                {
+                    this._lineEntity.HIGHPRESSUREFLAG = 0;
+                }
+                else
+                {
+                    this._lineEntity.HIGHPRESSUREFLAG = Convert.ToInt32(drGrouting["HIGHPRESSUREFLAG"]);
+                }
                 //xuwei end
-				this._lineEntity.MOULDQUANTITY = Convert.ToDecimal(drGrouting["MOULDQUANTITY"]);
+                this._lineEntity.MOULDQUANTITY = Convert.ToDecimal(drGrouting["MOULDQUANTITY"]);
 				this._lineEntity.MOULDTYPEID = Convert.ToInt32(drGrouting["GMOULDTYPEID"]);
                 if (drGrouting["USERID"] != null && drGrouting["USERID"] != DBNull.Value)
                 {

+ 226 - 10
DK.Service/CMNModuleService/PLCWorkLogic..cs

@@ -53,7 +53,22 @@ namespace Dongke.IBOSS.PRD.Service.CMNModuleService
                 try
                 {
                     //按当前登录用户在工位表中的当前工号查找工位类型
-                    workStationType = getWorkStationType(conn, sUserInfo.UserCode);
+                    //workStationType = getWorkStationType(conn, sUserInfo.UserCode);
+                    DataTable dataTable = GetWorkStationInfo(conn, sUserInfo.UserCode);
+                    if (dataTable == null || dataTable.Rows.Count == 0)
+                    {
+                        return new ServiceResultEntity() { Status = Constant.ServiceResultStatus.Other, Message = "当前工号无工位信息" };
+                    }
+
+                    if (dataTable.Columns.Contains("PLC_FLAG"))
+                    {
+                        string plc_flag = dataTable.Rows[0]["PLC_FLAG"] + "";
+                        if (plc_flag != "1")
+                        {
+                            return new ServiceResultEntity() { Status = Constant.ServiceResultStatus.Success, Message = "" /*"PLC对接未启用"*/ };
+                        }
+                    }
+                    workStationType = Convert.ToInt32(dataTable.Rows[0]["WORKSTATIONTYPEID"]);
 
                     //成检交接3211
                     if (workStationType == 3211)
@@ -244,6 +259,33 @@ namespace Dongke.IBOSS.PRD.Service.CMNModuleService
                 new CDAParameter("USERCODE", userCode)
             ));
         }
+        private static DataTable GetWorkStationInfo(IDataAccess conn, string userCode)
+        {
+            DataTable dataTable = conn.ExecuteDatatable(@"
+                SELECT
+t.workstationid, 
+t.workstationtypeid, 
+t.workstationname, 
+t.procedureid, 
+t.groutinglineid, 
+t.usercode, 
+t.pccode, 
+t.plcip, 
+t.plcport, 
+t.plcobject,
+t.valueflag,
+t.plcobjectread, 
+t.plc_flag
+                FROM
+	                TP_MST_WORKSTATION t 
+                WHERE
+	                t.USERCODE =@USERCODE@
+                ",
+                //new CDAParameter("WORKSTATIONTYPE", workStationType),
+                new CDAParameter("USERCODE", userCode)
+             );
+            return dataTable;
+        }
 
         /// <summary>
         /// 写PLC xuwei add 2020-06-29
@@ -257,13 +299,24 @@ namespace Dongke.IBOSS.PRD.Service.CMNModuleService
         {
             //读取工位配置信息
             DataTable dataTable = conn.ExecuteDatatable(@"
-                SELECT
-	                * 
+                SELECT --t.*
+t.workstationtypeid, 
+t.workstationname, 
+t.procedureid, 
+t.groutinglineid, 
+t.usercode, 
+t.pccode, 
+t.plcip, 
+t.plcport, 
+t.plcobject,
+t.valueflag,
+t.plcobjectread, 
+t.plc_flag
                 FROM
 	                TP_MST_WORKSTATION t 
                 WHERE
 	                t.WORKSTATIONTYPEID = @WORKSTATIONTYPE@
-	                AND USERCODE =@USERCODE@
+	                AND t.USERCODE =@USERCODE@
                 ",
                 new CDAParameter("WORKSTATIONTYPE", workStationType),
                 new CDAParameter("USERCODE", userCode)
@@ -272,7 +325,20 @@ namespace Dongke.IBOSS.PRD.Service.CMNModuleService
             {
                 return new ServiceResultEntity() { Status = Constant.ServiceResultStatus.Other, Message = "当前工号无工位信息" };
             }
+
+            if (dataTable.Columns.Contains("PLC_FLAG"))
+            {
+                string plc_flag = dataTable.Rows[0]["PLC_FLAG"] + "";
+                if (plc_flag != "1")
+                {
+                    return new ServiceResultEntity() { Status = Constant.ServiceResultStatus.Success, Message = "" /*"PLC对接未启用"*/ };
+                }
+            }
             string ip = dataTable.Rows[0]["PLCIP"] + "";
+            if (string.IsNullOrWhiteSpace(ip))
+            {
+                return new ServiceResultEntity() { Status = Constant.ServiceResultStatus.Success, Message = "" /*"PLC对接未启用"*/ };
+            }
             int port = Convert.ToInt32(dataTable.Rows[0]["PLCPORT"]);
             JArray plcObj = JArray.Parse(dataTable.Rows[0]["PLCOBJECT"].ToString());
 
@@ -327,13 +393,24 @@ namespace Dongke.IBOSS.PRD.Service.CMNModuleService
             {
                 //读取工位配置信息
                 DataTable dataTable = conn.ExecuteDatatable(@"
-					SELECT
-						* 
+					SELECT --t.*
+t.workstationtypeid, 
+t.workstationname, 
+t.procedureid, 
+t.groutinglineid, 
+t.usercode, 
+t.pccode, 
+t.plcip, 
+t.plcport, 
+t.plcobject,
+t.valueflag,
+t.plcobjectread, 
+t.plc_flag
 					FROM
 						TP_MST_WORKSTATION t 
 					WHERE
 						t.WORKSTATIONTYPEID = @WORKSTATIONTYPE@
-						AND USERCODE =@USERCODE@
+						AND t.USERCODE =@USERCODE@
 					",
                     new CDAParameter("WORKSTATIONTYPE", workStationType),
                     new CDAParameter("USERCODE", userCode)
@@ -344,7 +421,20 @@ namespace Dongke.IBOSS.PRD.Service.CMNModuleService
                     return new ServiceResultEntity() { Status = Constant.ServiceResultStatus.Other, Message = "当前工号无工位信息" };
                 }
 
+                if (dataTable.Columns.Contains("PLC_FLAG"))
+                {
+                    string plc_flag = dataTable.Rows[0]["PLC_FLAG"] + "";
+                    if (plc_flag != "1")
+                    {
+                        return new ServiceResultEntity() { Status = Constant.ServiceResultStatus.Success, Message = "" /*"PLC对接未启用"*/ };
+                    }
+                }
+
                 string ip = dataTable.Rows[0]["PLCIP"] + "";
+                if (string.IsNullOrWhiteSpace(ip))
+                {
+                    return new ServiceResultEntity() { Status = Constant.ServiceResultStatus.Success, Message = "" /*"PLC对接未启用"*/ };
+                }
                 int port = Convert.ToInt32(dataTable.Rows[0]["PLCPORT"]);
                 JArray plcObj = JArray.Parse(dataTable.Rows[0]["PLCOBJECTREAD"].ToString());
 
@@ -397,7 +487,19 @@ namespace Dongke.IBOSS.PRD.Service.CMNModuleService
 
 #region 读取工位配置信息
                 string sql =
-                        "SELECT *\n" +
+                        "SELECT --t.*\n" + @"
+t.workstationtypeid, 
+t.workstationname, 
+t.procedureid, 
+t.groutinglineid, 
+t.usercode, 
+t.pccode, 
+t.plcip, 
+t.plcport, 
+t.plcobject,
+t.valueflag,
+t.plcobjectread, 
+t.plc_flag" +
                         "  FROM tp_mst_workstation t\n" +
                         " WHERE t.workstationtypeid = @workstationtype@";
 
@@ -405,7 +507,7 @@ namespace Dongke.IBOSS.PRD.Service.CMNModuleService
 
                 if (!string.IsNullOrEmpty(userCode))
                 {
-                    sql += " AND usercode = @usercode@";
+                    sql += " AND t.usercode = @usercode@";
                     paras.Add(new CDAParameter("usercode", userCode));
                 }
 
@@ -415,9 +517,123 @@ namespace Dongke.IBOSS.PRD.Service.CMNModuleService
                 {
                     return new ServiceResultEntity() { Status = Constant.ServiceResultStatus.Other, Message = "无当前工位信息" };
                 }
-#endregion
+
+                if (dataTable.Columns.Contains("PLC_FLAG"))
+                {
+                    string plc_flag = dataTable.Rows[0]["PLC_FLAG"] + "";
+                    if (plc_flag != "1")
+                    {
+                        return new ServiceResultEntity() { Status = Constant.ServiceResultStatus.Success, Message = "" /*"PLC对接未启用"*/ };
+                    }
+                }
+                #endregion
 
                 string ip = dataTable.Rows[0]["PLCIP"] + "";
+                if (string.IsNullOrWhiteSpace(ip))
+                {
+                    return new ServiceResultEntity() { Status = Constant.ServiceResultStatus.Success, Message = "" /*"PLC对接未启用"*/ };
+                }
+                int port = Convert.ToInt32(dataTable.Rows[0]["PLCPORT"]);
+                JArray plcObj = JArray.Parse(dataTable.Rows[0]["PLCOBJECT"].ToString());
+
+                //写入PLC
+                using (SocketClient<SiemensS7_1200Model> plc = new SocketClient<SiemensS7_1200Model>())
+                {
+                    //自动按配置写
+                    plc.Connect(ip, port);
+                    for (int i = 0; i < plcObj.Count; i++)
+                    {
+                        if (plcObj[i]["type"].ToString().ToLower() == "string")
+                            plc.Write<string>(plcObj[i]["code"].ToString(), plcObj[i]["number"].ToString(), plcPara[plcObj[i]["name"].ToString()].ToString());
+                        else if (plcObj[i]["type"].ToString().ToLower() == "int")
+                            plc.Write<short>(plcObj[i]["code"].ToString(), plcObj[i]["number"].ToString(), Convert.ToInt16(plcPara[plcObj[i]["name"].ToString()]));
+                        else if (plcObj[i]["type"].ToString().ToLower() == "bool")
+                            plc.Write<bool>(plcObj[i]["code"].ToString(), plcObj[i]["number"].ToString(), Convert.ToBoolean(plcPara[plcObj[i]["name"].ToString()]));
+                    }
+
+                }
+#if DEBUG
+                //写入操作成功日志
+                string plcParaStr = "";
+                foreach (string key in plcPara.Keys)
+                {
+                    plcParaStr += " " + key + ":" + plcPara[key].ToString() + " ";
+                }
+                Curtain.Log.Logger.Debug($"PLC写入成功!{plcParaStr} {ip} {userCode} {plcObj.ToString()}");
+#endif
+                //PLC操作成功
+                return new ServiceResultEntity()
+                {
+                    Status = Constant.ServiceResultStatus.Success,
+                    Message = "" //一定不可以有值,为空时才是提交成功
+                };
+            }
+        }
+ 
+        /// <summary>
+        /// 写PLC 成型线放行
+        /// </summary>
+        /// <param name="workStationType"></param>
+        /// <param name="plcPara"></param>
+        /// <param name="userCode"></param>
+        /// <returns></returns>
+        public static ServiceResultEntity PlcWrite_GL(int workStationType, int gl_id,
+            Hashtable plcPara, string userCode = null)
+        {
+            using (IDataAccess conn = DataAccess.Create())
+            {
+                List<CDAParameter> paras = new List<CDAParameter>();
+
+                #region 读取工位配置信息
+                string sql =
+                        "SELECT --t.*\n" + @"
+t.workstationtypeid, 
+t.workstationname, 
+t.procedureid, 
+t.groutinglineid, 
+t.usercode, 
+t.pccode, 
+t.plcip, 
+t.plcport, 
+t.plcobject,
+t.valueflag,
+t.plcobjectread, 
+t.plc_flag" +
+                        "  FROM tp_mst_workstation t\n" +
+                        " WHERE t.workstationtypeid = @workstationtype@\n" +
+                        "   AND t.GROUTINGLINEID = @GROUTINGLINEID@\n"
+                        ;
+
+                paras.Add(new CDAParameter("workstationtype", workStationType));
+                paras.Add(new CDAParameter("GROUTINGLINEID", gl_id));
+
+                if (!string.IsNullOrEmpty(userCode))
+                {
+                    sql += " AND t.usercode = @usercode@";
+                    paras.Add(new CDAParameter("usercode", userCode));
+                }
+
+                DataTable dataTable = conn.ExecuteDatatable(sql, paras.ToArray());
+
+                if (dataTable == null || dataTable.Rows.Count == 0)
+                {
+                    return new ServiceResultEntity() { Status = Constant.ServiceResultStatus.Other, Message = "无当前工位信息" };
+                }
+                if (dataTable.Columns.Contains("PLC_FLAG"))
+                {
+                    string plc_flag = dataTable.Rows[0]["PLC_FLAG"] + "";
+                    if (plc_flag != "1")
+                    {
+                        return new ServiceResultEntity() { Status = Constant.ServiceResultStatus.Success, Message = "" /*"PLC对接未启用"*/ };
+                    }
+                }
+                #endregion
+
+                string ip = dataTable.Rows[0]["PLCIP"] + "";
+                if (string.IsNullOrWhiteSpace(ip))
+                {
+                    return new ServiceResultEntity() { Status = Constant.ServiceResultStatus.Success, Message = "" /*"PLC对接未启用"*/ };
+                }
                 int port = Convert.ToInt32(dataTable.Rows[0]["PLCPORT"]);
                 JArray plcObj = JArray.Parse(dataTable.Rows[0]["PLCOBJECT"].ToString());
 

+ 4 - 0
DK.Service/PDAModuleLogic/PDAModuleLogic.csproj

@@ -117,6 +117,10 @@
       <Project>{4c4bfbdc-125c-488a-8b35-5a0637478c66}</Project>
       <Name>WCF.DataModels</Name>
     </ProjectReference>
+    <ProjectReference Include="..\CMNModuleService\CMNModuleService.csproj">
+      <Project>{86518B86-66A1-45D3-86CC-F6D6CF0EFA35}</Project>
+      <Name>CMNModuleService</Name>
+    </ProjectReference>
     <ProjectReference Include="..\CommonModuleLogic\CommonModuleLogic.csproj">
       <Project>{f675544b-7bec-4fcf-b01a-fc322c6311fc}</Project>
       <Name>CommonModuleLogic</Name>

+ 28 - 0
DK.Service/PDAModuleLogic/PDAModuleLogicWorkShop3.cs

@@ -26,6 +26,8 @@ using Dongke.IBOSS.PRD.WCF.DataModels.PCModule;
 using Dongke.IBOSS.PRD.WCF.DataModels.PMModule;
 using Oracle.ManagedDataAccess.Client;
 using Newtonsoft.Json.Linq;
+using Dongke.IBOSS.PRD.Service.CMNModuleService;
+using System.Collections;
 
 namespace Dongke.IBOSS.PRD.Service.PDAModuleLogic
 {
@@ -1458,6 +1460,8 @@ namespace Dongke.IBOSS.PRD.Service.PDAModuleLogic
             try
             {
                 conn.Connect();
+                int gl_id = Convert.ToInt32(conn.GetSqlResultToStr($"select g.groutinglineid from tp_pm_groutingdailydetail g where g.GROUTINGDAILYDETAILID = {groutingDailyDetailId}"));
+
                 //检查注浆限制天数 'S_PM_023'
                 if (sre.Status == Constant.ServiceResultStatus.Success)
                 {
@@ -1585,9 +1589,19 @@ namespace Dongke.IBOSS.PRD.Service.PDAModuleLogic
                 }
                 //提交
                 if (sre.Status == Constant.ServiceResultStatus.Success)
+                {
                     conn.Commit();
+                }
                 else
+                {
                     conn.Rollback();
+                    return sre;
+                }
+
+                // 写入放行PLC
+                Hashtable plcPara = new Hashtable();
+                plcPara.Add("finishflag", 1);
+                ServiceResultEntity sre_plc = PLCModuleLogic.PlcWrite_GL(3501, gl_id, plcPara, sUser.UserCode);
             }
             catch (Exception ex)
             {
@@ -1875,6 +1889,8 @@ namespace Dongke.IBOSS.PRD.Service.PDAModuleLogic
             try
             {
                 conn.Connect();
+
+                int gl_id = Convert.ToInt32(conn.GetSqlResultToStr($"select g.groutinglineid from tp_pm_groutingdailydetail g where g.GROUTINGDAILYDETAILID = {groutingDailyDetailId}"));
                 //未注浆/在产/已报损(不能重复操作)/撤销报损(不能重复操作) xuwei modify 2019-11-25
                 if (sre.Status == Constant.ServiceResultStatus.Success)
                 {
@@ -1956,10 +1972,22 @@ namespace Dongke.IBOSS.PRD.Service.PDAModuleLogic
                 }
                 //提交
                 if (sre.Status == Constant.ServiceResultStatus.Success)
+                {
                     conn.Commit();
+                }
                 else
+                {
                     conn.Rollback();
+                    return sre;
+                }
 
+                // 写入放行PLC
+                if (scrapFlag == "1")
+                {
+                    Hashtable plcPara = new Hashtable();
+                    plcPara.Add("finishflag", 1);
+                    ServiceResultEntity sre_plc = PLCModuleLogic.PlcWrite_GL(3501, gl_id, plcPara, sUser.UserCode);
+                }
             }
             catch (Exception ex)
             {

+ 7 - 2
DK.Service/PMModuleLogic/PMModuleLogicPartial.cs

@@ -1653,8 +1653,13 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
 				if (!dtBarCode.Columns.Contains("PLCWeight"))
 				{
 					dtBarCode.Columns.Add("PLCWeight", typeof(decimal));
-				}
-				dtBarCode.Rows[0]["PLCWeight"] = Get3PLCWeight(sUserInfo);
+                    dtBarCode.Rows[0]["PLCWeight"] = 0;
+                }
+                // 成检交接(二检) 获取重量
+                if (procedureID == 104)
+                {
+                    dtBarCode.Rows[0]["PLCWeight"] = Get3PLCWeight(sUserInfo);
+                }
 
 				returnDs.Tables.Add(dtBarCode);
 				return returnDs;

+ 1 - 1
DK.Service/SAPDataService/SAPDataLogic.cs

@@ -1843,7 +1843,7 @@ namespace Dongke.IBOSS.PRD.Service.SAPHegiiDataService
 						sapClient.ClientCredentials.UserName;
                     //credential.UserName = "hgsapdk";
                     //credential.Password = "Sapdk#240";
-                    INIUtility ini = INIUtility.Instance(INIUtility.IniFile.Config);
+                    INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
                     credential.UserName = ini.ReadIniData("SAP_HEGII", "UserName");
                     credential.Password = ini.ReadIniData("SAP_HEGII", "Password");
                     // 参数

+ 38 - 2
WCF.Service/WCF.WebHosting/Global.asax.cs

@@ -242,6 +242,9 @@ namespace Dongke.IBOSS.PRD.WCF.WebHosting
             {
                 lock (Timer_Loker)
                 {
+                    // 当前时间
+                    DateTime dateTimeNow = DateTime.Now;
+
                     INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
 
                     // 下次开始时间
@@ -249,8 +252,6 @@ namespace Dongke.IBOSS.PRD.WCF.WebHosting
                     DateTime ndate = DateTime.ParseExact(nextDate, "yyyy-MM-dd HH:mm", CultureInfo.InvariantCulture);
                     DateTime.TryParseExact(nextDate, "yyyy-MM-dd HH:mm", CultureInfo.InvariantCulture, DateTimeStyles.None, out ndate);
 
-                    // 当前时间
-                    DateTime dateTimeNow = DateTime.Now;
                     if (ndate != null && ndate <= dateTimeNow)
                     {
                         // 间隔时间(分钟)
@@ -279,6 +280,40 @@ namespace Dongke.IBOSS.PRD.WCF.WebHosting
                                    LocalPath.LogExePath + "SAP_HEGII\\Timer_");
                     }
 
+                    #region 50
+                    string nextDate50 = ini.ReadIniData("SAP_HEGII", "NextDate50");
+                    if (!string.IsNullOrWhiteSpace(nextDate50) &&
+                        DateTime.TryParseExact(nextDate50, "yyyy-MM-dd HH:mm", null, DateTimeStyles.None, out ndate) &&
+                        ndate <= dateTimeNow)
+                    {
+                        // 间隔时间(分钟)
+                        int interval50 = ini.ReadIniData("SAP_HEGII", "Interval50").ToInt32();
+                        DateTime nextDateINI50 = ndate.AddMinutes(interval50);
+
+                        // 更新下次执行时间
+                        ini.WriteIniData("SAP_HEGII", "NextDate50", nextDateINI50.ToString("yyyy-MM-dd HH:mm"));
+
+                        string funCode = "50";
+                        OutputLog.TraceLog(LogPriority.Information,
+                                   "Global2",
+                                   "OnTimedEvent begin: " + funCode,
+                                   "AutoWorkDataToSAP : " + Timer_Loker.LockerName + " - " + e.SignalTime.ToString("yyyy-MM-dd HH:mm:ss")
+                                    + " - " + dateTimeNow.ToString("yyyy-MM-dd HH:mm:ss") + $" -date:" + ndate.ToString("yyyy-MM-dd HH:mm:ss")
+                                    + $" -[{interval50}]" + nextDateINI50.ToString("yyyy-MM-dd HH:mm:ss"),
+                                   LocalPath.LogExePath + "SAP_HEGII\\Timer_");
+
+                        Service.SAPHegiiDataService.SAPDataLogic.AutoWorkDataToSAP(ndate, funCode, ndate);
+
+                        OutputLog.TraceLog(LogPriority.Information,
+                                   "Global2",
+                                   "OnTimedEvent end",
+                                   "AutoWorkDataToSAP : " + Timer_Loker.LockerName + " - " + e.SignalTime.ToString("yyyy-MM-dd HH:mm:ss")
+                                    + " - " + dateTimeNow.ToString("yyyy-MM-dd HH:mm:ss") + " - " + ndate.ToString("yyyy-MM-dd HH:mm:ss"),
+                                   LocalPath.LogExePath + "SAP_HEGII\\Timer_");
+                    }
+                    #endregion
+
+                    #region 6002
                     string nextDate6002 = ini.ReadIniData("SAP_HEGII", "NextDate6002");
                     if (!string.IsNullOrWhiteSpace(nextDate6002))
                     {
@@ -307,6 +342,7 @@ namespace Dongke.IBOSS.PRD.WCF.WebHosting
                             }
                         }
                     }
+                    #endregion
                 }
             }
             catch (Exception ex)

+ 2 - 0
WCF.Service/WCF.WebHosting/SAP_HEGII.ini

@@ -6,6 +6,8 @@ SAP_ING=0
 Interval=120
 ;Ï´ÎÖ´ÐеÄʱ¼ä
 NextDate=2020-08-25 16:00
+Interval50=30
+NextDate50=2020-06-01 00:00
 
 ByTime=07:30
 NextDate6002=2020-06-01 00:00