geotools最短路徑的實現
阿新 • • 發佈:2022-05-20
// 定義一個定時器類(類名格式:自定義功能名 + _Timer),且繼承H3.SmartForm.Timer類 public class Supervision_Timer: H3.SmartForm.Timer { //構造方法,跟類名保持一致,裡面不必書寫程式碼,但是必須存在 public Supervision_Timer() { } //重寫定時器引擎執行的方法,必須存在,且方法名必須為OnWork,改動 protected override void OnWork(H3.IEngine engine) { TimeSpan ts1 = new TimeSpan(DateTime.Now.Ticks); try { DateTime now = DateTime.Now; DateTime startTime = Convert.ToDateTime("08:00:00");//計劃開始時間 DateTime endTime = Convert.ToDateTime("12:00:00");//計劃完成時間 AttendanceManagement AttendanceManagement = new AttendanceManagement(); bool boole = AttendanceManagement.judgeWorkDay(now, engine); //定時上班打卡 if(startTime < now && endTime > now && !boole) { AttendanceManagement.AttendanceRecord(engine); } //下班訊息提醒 DateTime startTime1 = Convert.ToDateTime("19:30:00");//計劃開始時間 DateTime endTime1 = Convert.ToDateTime("21:00:00");//計劃完成時間 if(startTime1 < now && endTime1 > now && !boole) { ClockinMessage ClockinMessage = new ClockinMessage(); ClockinMessage.projectPerson(engine); } TimeSpan ts2 = new TimeSpan(DateTime.Now.Ticks); double usedTime = ts1.Subtract(ts2).Duration().TotalSeconds; addLogFS(engine, null, usedTime); //寫定時器日誌 } catch(Exception ex) { TimeSpan ts2 = new TimeSpan(DateTime.Now.Ticks); double usedTime = ts1.Subtract(ts2).Duration().TotalSeconds; addLogFS(engine, ex, usedTime); //寫定時器日誌 errorHandlerRemindFS(engine, ex); //定時處理異常提醒 } } /* 在業務程式碼執行完畢後使用 向定時器日誌新增一行記錄 入參: 氚雲引擎, 流水號(定時器代號), 異常類(正常處理傳空) , 執行時間 by: lins, date: 2020-12-02 */ private void addLogFS(H3.IEngine engine, Exception ex, double usedTime) { H3.DataModel.BizObjectSchema schema = engine.BizObjectManager.GetPublishedSchema("D002033timerLog"); H3.DataModel.BizObject createBo = new H3.DataModel.BizObject(engine, schema, H3.Organization.User.SystemUserId); // createBo["joinFormMenu"] = joinFormMenu; // createBo["joinTimerDefinition"] = objectId; createBo["usedTime"] = usedTime; bool successFlag = true; if(ex != null) { successFlag = false; createBo["errorMessage"] = ex.Message; createBo["errorStackTrace"] = ex.StackTrace; } createBo["successFlag"] = successFlag; //設定業務物件資料為生效狀態 createBo.Status = H3.DataModel.BizObjectStatus.Effective; createBo.Create(); } /* 向定時器管理員傳送定時器處理異常資訊 入參: 氚雲引擎, 流水號(定時器代號), 異常類 by: lins, date: 2021-02-25 */ private void errorHandlerRemindFS(H3.IEngine engine, Exception ex) { // string[] handlers = (string[]) masterBo["errorHandler"]; List < H3.Notification.UserMessage > messageList=new List<H3.Notification.UserMessage>(); // for(int i = 0;i < handlers.Length; i++) { string title = "定時器報錯處理提醒";//標題 string context = "定時器: '考勤打卡訊息通知'執行失敗請前往定時器日誌檢視, 出錯資訊: -> " + ex.Message;//傳送內容 string send = H3.Organization.User.SystemUserId;//發起人 string receiverid = "8b9de57e-2ebc-4d75-82cf-d891b0b7e09b";//handlers[i] + string.Empty;//接收人 H3.Notification.UserMessage message = new H3.Notification.UserMessage(H3.Notification.UserMessageType.DingTalkPlainText, send, receiverid, "", title, context, ""); messageList.Add(message); // } if(messageList.Count > 0) engine.Notifier.Send(messageList.ToArray());//執行傳送 } }