/// <summary> /// 同步任务状态到数据库。 /// </summary> /// <param name="queryObjectResult">查询结果</param> /// <param name="taskName">任务名</param> private void SaveTaskProgressToDB(QueryObjectResult <DeployProgress> queryObjectResult, string taskName) { //sync to the database. DeployProgress deployProgress = queryObjectResult.Data; HWESightTask hwtask = HWESightTaskDal.Instance.FindTaskByName(this.ESSession.HWESightHost.ID, taskName); hwtask.TaskStatus = deployProgress.TaskStatus; hwtask.TaskResult = deployProgress.TaskResult; hwtask.TaskCode = (!string.IsNullOrEmpty(deployProgress.TaskCode) && !string.Equals(deployProgress.TaskCode, "0")) ? (errorPix + deployProgress.TaskCode) : deployProgress.TaskCode; hwtask.ErrorDetail = deployProgress.ErrorDetail; hwtask.LastModifyTime = System.DateTime.Now; //find child device in database. int progress = UpdateHWTaskResourceList(hwtask, deployProgress); if (progress > 0) { hwtask.TaskProgress = progress;// deployProgress.TaskProgress; } else { hwtask.TaskProgress = deployProgress.TaskProgress; } if (progress == 100) { hwtask.SyncStatus = ConstMgr.HWESightTask.SYNC_STATUS_FINISHED; } hwtask.SyncStatus = GetTaskStatus(hwtask.SyncStatus, deployProgress.TaskStatus, deployProgress.TaskResult, deployProgress.TaskCode); HWESightTaskDal.Instance.UpdateEntity(hwtask); }
/// <summary> /// 更新任务资源表。 更新设备明细到数据库 /// </summary> /// <param name="hwtask">模板部署任务</param> /// <param name="deployProgress">部署任务明细</param> /// <returns>完成的设备数量</returns> private int UpdateHWTaskResourceList(HWESightTask hwtask, DeployProgress deployProgress) { bool isFinsihed = false; int finishedCnt = 0; IList <HWTaskResource> resourceList = HWTaskResourceDal.Instance.FindTaskResourceByTaskId(hwtask.ID); Dictionary <string, DeviceProgress> dviDict = new Dictionary <string, DeviceProgress>(); if (deployProgress.DeviceDetails == null) { return(0); } DeviceProgress emptyDevicProcess = null; foreach (DeviceProgress deviceProgress in deployProgress.DeviceDetails) { if (string.IsNullOrEmpty(deviceProgress.DeviceDn))//如果dn为空,设备关闭或者删除的时候。 { emptyDevicProcess = deviceProgress; } else { dviDict[deviceProgress.DeviceDn.ToUpper()] = deviceProgress; } } foreach (HWTaskResource hwResource in resourceList) { DeviceProgress deviceProgress = null; if (dviDict.ContainsKey(hwResource.DN.ToUpper())) { deviceProgress = dviDict[hwResource.DN.ToUpper()]; hwResource.DeviceResult = deviceProgress.DeviceResult; hwResource.DeviceProgress = deviceProgress.Progress; hwResource.ErrorCode = deviceProgress.ErrorCode; hwResource.ErrorDetail = deviceProgress.ErrorDetail; hwResource.TaskType = ConstMgr.HWESightTask.TASK_TYPE_DEPLOY; hwResource.SyncStatus = hwtask.SyncStatus; hwResource.LastModifyTime = System.DateTime.Now; if (deviceProgress.Progress == 100) { finishedCnt++; } } else { if (emptyDevicProcess != null) { LogUtil.HWLogger.API.WarnFormat("System can't find this dn=[{0}], using the none dn message.", hwResource.DN); hwResource.DeviceResult = emptyDevicProcess.DeviceResult; hwResource.DeviceProgress = emptyDevicProcess.Progress; hwResource.ErrorCode = emptyDevicProcess.ErrorCode; hwResource.ErrorDetail = emptyDevicProcess.ErrorDetail; hwResource.TaskType = ConstMgr.HWESightTask.TASK_TYPE_DEPLOY; hwResource.SyncStatus = hwtask.SyncStatus; hwResource.LastModifyTime = System.DateTime.Now; if (emptyDevicProcess.Progress == 100) { finishedCnt++; } } else { LogUtil.HWLogger.API.WarnFormat("System can't find this dn=[{0}]", hwResource.DN); } } HWTaskResourceDal.Instance.UpdateEntity(hwResource); } if (resourceList.Count > 0) { return((finishedCnt * 100) / resourceList.Count); } else { return(0); } }