Beispiel #1
0
        public static void f()
        {
            string s      = "N";
            bool   pushed = false;

            while (true)
            {
                if (s.ToUpper() == "Y" || (DateTime.Now.Hour == int.Parse(ConfigurationManager.AppSettings["Task1_push_time"]) && !pushed))
                {
                    //Console.WriteLine(DateTime.Now + "  pushing...");
                    string    sql = @"select Asset.Status, Asset.AssetID, Asset.AssetName, Asset.remark, g.NextAdjustDate, a.ApplicantID, a.ApplicantName,g.AdjustNoticeDays from Gage g left join  Asset  on g.FK_AssetID = Asset.AssetID  
                        left join (select * from LendSlip where ReturnDate is null) a on g.FK_AssetID  = a.AssetID 
                        where StandardAdjustType != '免校' and  CHARINDEX('在校', Status) = 0 and Status != '报废'
                        and  DATEADD(day, AdjustNoticeDays, CONVERT(varchar(100), GETDATE(), 23)) >= CONVERT(varchar(100), NextAdjustDate, 23)";
                    DataTable dt  = Common.SQLHelper.ExecuteQueryToDataTable(Common.SQLHelper.Asset_strConn, sql); //获取满足提前通知天数的待校量具

                    if (dt != null)
                    {
                        Dictionary <int, string> requests = new Dictionary <int, string>();
                        for (int i = 0; i < dt.Rows.Count; i++)
                        {
                            if (IsNeedPush(dt.Rows[i]))//判断是否需要推送
                            {
                                if ((string)dt.Rows[i]["Status"] == "在库")
                                {
                                    string[] AdminId = ConfigurationManager.AppSettings["Task1_Admin"].ToString().Split(',');
                                    for (int k = 0; k < AdminId.Length; k++)
                                    {
                                        int id = int.Parse(AdminId[k].Trim());
                                        if (requests.ContainsKey(id))
                                        {
                                            requests[id] += AppendRequestXml(dt.Rows[i]);
                                        }
                                        else
                                        {
                                            requests.Add(id, CreateRequestFor(id) + AppendRequestXml(dt.Rows[i]));
                                        }
                                    }
                                }
                                else//不在库
                                {
                                    sql = @"select id from HrmResource where loginid = '" + (string)dt.Rows[i]["ApplicantID"] + "'";
                                    int id = (int)Common.SQLHelper.ExecuteScalarToObject(Common.SQLHelper.OA_strConn, CommandType.Text, sql, null); //获取满足提前通知天数的待校量具

                                    if (requests.ContainsKey(id))
                                    {
                                        requests[id] += AppendRequestXml(dt.Rows[i]);
                                    }
                                    else
                                    {
                                        requests.Add(id, CreateRequestFor(id) + AppendRequestXml(dt.Rows[i]));
                                    }
                                }
                            }
                        }

                        List <int> ids = new List <int>();
                        foreach (var v in requests.Keys)
                        {
                            ids.Add(v);
                        }

                        foreach (var v in ids)
                        {
                            string end = @"</workflowRequestTableRecords>
		                                </weaver.workflow.webservices.WorkflowDetailTableInfo>
	                                </workflowDetailTableInfos>
                                 </WorkflowRequestInfo>";
                            requests[v] += end;

                            OAServiceReference.WorkflowServiceXmlPortTypeClient client = new OAServiceReference.WorkflowServiceXmlPortTypeClient();
                            string io = client.doCreateWorkflowRequest(requests[v], 1012);

                            //Console.Write(v + "(" + io + "),");
                        }

                        //Console.WriteLine("\n" + DateTime.Now + "  completed\n");
                    }

                    s      = "N";
                    pushed = true;
                }

                if (DateTime.Now.Hour < int.Parse(ConfigurationManager.AppSettings["Task1_push_time"])) //新的一天重置pushed为未推送
                {
                    pushed = false;
                }
            }
        }
Beispiel #2
0
        public static void f()
        {
            while (true)
            {
                DateTime dateTime = DateTime.Now;
                if (dateTime.Minute % int.Parse(ConfigurationManager.AppSettings["Task2_Interval_time"]) == 0)
                {
                    string sql = @"select AA.AssetID, BB.AssetName,BB.ApplicantID,bb.ApplicantName  from 
                                (select ranked.AssetID,ranked.SysArchiveTime,ranked.rowNum,ranked.AdjustDate from Gage g left join 
                                (select *, ROW_NUMBER() over(partition by AssetID  order by SysArchiveTime desc)
                                as rowNum  from GageAdjustSlip a where a.SysArchiveTime is not null and  a.SysArchiveTime >= '{0}' and a.SysArchiveTime < '{1}'  ) as ranked
                                on g.FK_AssetID = ranked.AssetID
                                 where ranked.rowNum = 1
                                 ) as AA  left join 
                                (select *, ROW_NUMBER() over(partition by AssetID  order by LendDate desc)
                                as rowNum  from LendSlip ld) as BB
                                 on AA.rowNum = bb.rowNum and aa.AssetID = bb.AssetID
                                 where AA.rowNum = 1 and bb.ReturnDate is null and BB.LendDate < aa.AdjustDate";

                    sql = string.Format(sql, dateTime.AddMinutes(-10).ToString("yyyy-MM-dd HH:mm"), dateTime.ToString("yyyy-MM-dd HH:mm"));
                    DataTable dt = Common.SQLHelper.ExecuteQueryToDataTable(Common.SQLHelper.Asset_strConn, sql);

                    if (dt != null)
                    {
                        Dictionary <int, string> requests = new Dictionary <int, string>();
                        for (int i = 0; i < dt.Rows.Count; i++)
                        {
                            sql = @"select id from HrmResource where loginid = '" + (string)dt.Rows[i]["ApplicantID"] + "'";
                            int id = (int)Common.SQLHelper.ExecuteScalarToObject(Common.SQLHelper.OA_strConn, CommandType.Text, sql, null); //获取满足提前通知天数的待校量具

                            if (requests.ContainsKey(id))
                            {
                                requests[id] += AppendRequest(dt.Rows[i]);
                            }
                            else
                            {
                                requests.Add(id, CreateRequestFor(id) + AppendRequest(dt.Rows[i]));
                            }
                        }


                        List <int> ids = new List <int>();
                        foreach (var v in requests.Keys)
                        {
                            ids.Add(v);
                        }

                        foreach (var v in ids)
                        {
                            string end = @"</workflowRequestTableRecords>
		                                </weaver.workflow.webservices.WorkflowDetailTableInfo>
	                                </workflowDetailTableInfos>
                                 </WorkflowRequestInfo>";
                            requests[v] += end;

                            OAServiceReference.WorkflowServiceXmlPortTypeClient client = new OAServiceReference.WorkflowServiceXmlPortTypeClient();
                            string io = client.doCreateWorkflowRequest(requests[v], 1012);
                        }
                    }
                }


                Thread.Sleep(60000);
            }
        }