/// <summary>
        /// 添加部署任务
        /// </summary>
        /// <param name="taskSourceName">任务名,仅仅用做备注任务</param>
        /// <param name="deployTask">部署任务信息,包括模板类型和设备DN</param>
        /// <returns>返回eSight任务名</returns>
        public string AddDeployTask(string taskSourceName, DeployTask deployTask)
        {
            StringBuilder sb = new StringBuilder(ConstMgr.HWESightHost.URL_TASK_DEPLOY);
            IList <KeyValuePair <string, object> > parameters = new List <KeyValuePair <string, object> >();

            parameters.Add(new KeyValuePair <string, object>("templates", deployTask.Templates));
            parameters.Add(new KeyValuePair <string, object>("dn", deployTask.DeviceDn));

            JObject jResult = ESSession.HCPostForm(sb.ToString(), parameters);

            CheckAndThrowException(jResult);
            HWESightTask eSightTask = new HWESightTask();
            QueryObjectResult <JObject> queryObjectResult = jResult.ToObject <QueryObjectResult <JObject> >();

            eSightTask.HWESightHostID     = this.ESSession.HWESightHost.ID;
            eSightTask.TaskName           = JsonUtil.GetJObjectPropVal <string>(queryObjectResult.Data, "taskName");
            eSightTask.SoftWareSourceName = taskSourceName;
            eSightTask.TaskStatus         = ConstMgr.HWESightTask.TASK_STATUS_RUNNING;//初始化。
            eSightTask.TaskProgress       = 0;
            eSightTask.TaskResult         = "";
            eSightTask.ErrorDetail        = "";
            eSightTask.SyncStatus         = ConstMgr.HWESightTask.SYNC_STATUS_CREATED;
            eSightTask.TaskType           = ConstMgr.HWESightTask.TASK_TYPE_DEPLOY;
            eSightTask.LastModifyTime     = System.DateTime.Now;
            eSightTask.CreateTime         = System.DateTime.Now;
            int taskId = HWESightTaskDal.Instance.InsertEntity(eSightTask);

            eSightTask.ID = taskId;
            InsertHWTaskResourceList(eSightTask, deployTask.DeviceDn);

            LogUtil.HWLogger.API.InfoFormat("AddDeployTask:{0}", taskId);
            return(JsonUtil.GetJObjectPropVal <string>(queryObjectResult.Data, "taskName"));
        }
        /// <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);
        }
 private int UpdateHWTaskResourceList(HWESightTask hwtask, DeployPackageTaskDetail deployProgress)
 {
     /*
      * bool isFinsihed = false;
      * int finishedCnt = 0;
      * IList<HWTaskResource> resourceList = HWTaskResourceDal.Instance.FindTaskResourceByTaskId(hwtask.ID);
      * Dictionary<string, DeviceProgress> dviDict = new Dictionary<string, DeviceProgress>();
      * foreach (DeviceProgress deviceProgress in deployProgress.DeviceDetails)
      * {
      * dviDict[deviceProgress.DeviceDn.ToUpper()] = deviceProgress;
      * }
      * foreach (HWTaskResource hwResource in resourceList)
      * {
      * DeviceProgress deviceProgress = dviDict[hwResource.DN.ToUpper()];
      * hwResource.DeviceResult = deviceProgress.DeviceResult;
      * hwResource.DeviceProgress = deviceProgress.Progress;
      * hwResource.ErrorDetail = deviceProgress.ErrorDetail;
      * hwResource.TaskType = ConstMgr.HWESightTask.TASK_TYPE_DEPLOY;
      * hwResource.SyncStatus = hwtask.SyncStatus;
      * hwResource.LastModifyTime = System.DateTime.Now;
      * HWTaskResourceDal.Instance.UpdateEntity(hwResource);
      * if (deviceProgress.Progress == 100) finishedCnt++;
      * }
      * if (resourceList.Count > 0)
      * return (finishedCnt * 100) / resourceList.Count;
      * else
      * return 0;*/
     return(0);
 }
        /// <summary>
        /// 保存上传软件源进度到数据。
        /// </summary>
        /// <param name="queryObjectResult">返回的软件源进度对戏</param>
        /// <param name="taskName">eSight对应的任务名。</param>
        private void SaveTaskProgressToDB(QueryObjectResult <SourceProgress> queryObjectResult, string taskName)
        {
            //sync to the database.
            SourceProgress sourceProgress = queryObjectResult.Data;
            HWESightTask   hwtask         = HWESightTaskDal.Instance.FindTaskByName(this.ESSession.HWESightHost.ID, taskName);

            hwtask.TaskStatus   = sourceProgress.TaskStatus;
            hwtask.TaskProgress = sourceProgress.TaskProgress;
            hwtask.TaskResult   = sourceProgress.TaskResult;
            hwtask.TaskCode     =
                (!string.IsNullOrEmpty(sourceProgress.TaskCode) && !string.Equals(sourceProgress.TaskCode, "0")) ?
                ("deploy.error." + sourceProgress.TaskCode) : sourceProgress.TaskCode;

            hwtask.ErrorDetail    = sourceProgress.ErrorDetail;
            hwtask.SyncStatus     = GetTaskStatus(hwtask.SyncStatus, sourceProgress.TaskStatus, sourceProgress.TaskResult, sourceProgress.TaskCode);
            hwtask.LastModifyTime = System.DateTime.Now;
            HWESightTaskDal.Instance.UpdateEntity(hwtask);

            /* if (hwtask == null)
             * {
             *   throw new SoftwareSourceExpceion(ConstMgr.ErrorCode.DB_NOTFOUND, this, string.Format("查询软件源上传进度出错:数据库没有找到对应的任务。[{0}]", taskName));
             * }
             * else
             * {
             *   hwtask.TaskStatus = sourceProgress.TaskStatus;
             *   hwtask.TaskProgress = sourceProgress.TaskProgress;
             *   hwtask.TaskResult = sourceProgress.TaskResult;
             *   hwtask.TaskCode = sourceProgress.TaskCode;
             *   hwtask.ErrorDetail = sourceProgress.ErrorDetail;
             *   hwtask.SyncStatus = ConstMgr.HWESightTask.SYNC_STATUS_FINISHED;
             *   hwtask.LastModifyTime = System.DateTime.Now;
             *   HWESightTaskDal.Instance.UpdateEntity(hwtask);
             * }*/
        }
        /// <summary>
        /// 删除软件源,从数据库。
        /// </summary>
        /// <param name="basepackageName">软件源名称,eSight 返回的任务名</param>
        private void DeleteTaskProgressFromDBByName(string basepackageName)
        {
            HWESightTask hwTask = HWESightTaskDal.Instance.FindTaskBySourceName(this.ESSession.HWESightHost.ID, basepackageName);

            if (hwTask != null)
            {
                HWESightTaskDal.Instance.DeleteEntityById(hwTask.ID);
            }
            else
            {
                LogUtil.HWLogger.API.WarnFormat("System can't find this package in the database=[{0}]", basepackageName);
            }
        }
        /// <summary>
        /// 查询上传软件源进度
        /// </summary>
        /// <param name="taskName">eSight 返回的任务名</param>
        /// <returns>上传软件源进度对象</returns>
        public SourceProgress QuerySoftwareProcess(string taskName)
        {
            StringBuilder sb = new StringBuilder(ConstMgr.HWESightHost.URL_PROGRESS_SOFTWARESOURCE);

            sb.Append("?taskName=").Append(HttpUtility.UrlEncode(taskName, Encoding.UTF8));
            JObject jResult = ESSession.HCGet(sb.ToString());

            CheckAndThrowException(jResult);
            QueryObjectResult <SourceProgress> queryObjectResult = jResult.ToObject <QueryObjectResult <SourceProgress> >();
            //sync to the database.
            HWESightTask hwtask = HWESightTaskDal.Instance.FindTaskByName(this.ESSession.HWESightHost.ID, taskName);

            SaveTaskProgressToDB(queryObjectResult, taskName);
            return(queryObjectResult.Data);
        }
 /// <summary>
 /// 插入数据到任务资源表
 /// </summary>
 /// <param name="hwtask">任务对象</param>
 /// <param name="dnString">dn</param>
 private void InsertHWTaskResourceList(HWESightTask hwtask, string dnString)
 {
     string[] dns = dnString.Split(new char[] { ';' });
     foreach (string dn in dns)
     {
         HWTaskResource hwResource = new HWTaskResource();
         hwResource.HWESightTaskID = hwtask.ID;
         hwResource.DN             = dn;
         hwResource.DeviceResult   = "";
         hwResource.DeviceProgress = 0;
         hwResource.ErrorDetail    = "";
         hwResource.TaskType       = ConstMgr.HWESightTask.TASK_TYPE_DEPLOY;
         hwResource.SyncStatus     = hwtask.SyncStatus;
         hwResource.LastModifyTime = System.DateTime.Now;
         hwResource.CreateTime     = System.DateTime.Now;
         HWTaskResourceDal.Instance.InsertEntity(hwResource);
     }
 }
        /// <summary>
        /// 添加部署任务
        /// </summary>
        /// <param name="taskSourceName"></param>
        /// <param name="deployTask"></param>
        /// <returns>返回eSight任务名</returns>
        public string AddDeployTask(DeployPackageTask deployTask)
        {
            StringBuilder sb = new StringBuilder(ConstMgr.HWESightHost.URL_TASK_BASEPACKAGE);
            IList <KeyValuePair <string, object> > parameters = new List <KeyValuePair <string, object> >();

            parameters.Add(new KeyValuePair <string, object>("basepackageName", deployTask.BasepackageName));
            parameters.Add(new KeyValuePair <string, object>("firmwareList", deployTask.FirmwareList));
            parameters.Add(new KeyValuePair <string, object>("dn", deployTask.DeviceDn));
            parameters.Add(new KeyValuePair <string, object>("isforceupgrade", deployTask.IsForceUpgrade));
            parameters.Add(new KeyValuePair <string, object>("effectiveMethod", deployTask.EffectiveMethod));
            JObject jResult = ESSession.HCPostForm(sb.ToString(), parameters);

            CheckAndThrowException(jResult);
            HWESightTask eSightTask = new HWESightTask();
            QueryObjectResult <JObject> queryObjectResult = jResult.ToObject <QueryObjectResult <JObject> >();

            if (queryObjectResult.Code != 0)
            {
                throw GetDeployException(queryObjectResult.Code.ToString(), this, queryObjectResult.Description);//"添加部署任务出错:" +
            }
            else
            {//Save to database.
                eSightTask.HWESightHostID     = this.ESSession.HWESightHost.ID;
                eSightTask.TaskName           = JsonUtil.GetJObjectPropVal <string>(queryObjectResult.Data, "taskName");
                eSightTask.SoftWareSourceName = deployTask.BasepackageName;

                eSightTask.TaskStatus     = ConstMgr.HWESightTask.TASK_STATUS_RUNNING;//初始化。
                eSightTask.TaskProgress   = 0;
                eSightTask.TaskResult     = "";
                eSightTask.ErrorDetail    = "";
                eSightTask.SyncStatus     = ConstMgr.HWESightTask.SYNC_STATUS_CREATED;
                eSightTask.TaskType       = ConstMgr.HWESightTask.TASK_TYPE_DEPLOYFIRMWARE;//部署固件任务
                eSightTask.DeviceIp       = deployTask.DeviceDn;
                eSightTask.ReservedStr1   = deployTask.FirmwareList;
                eSightTask.LastModifyTime = System.DateTime.Now;
                eSightTask.CreateTime     = System.DateTime.Now;
                int taskId = HWESightTaskDal.Instance.InsertEntity(eSightTask);
                eSightTask.ID = taskId;
                InsertHWTaskResourceList(eSightTask, deployTask.DeviceDn);

                LogUtil.HWLogger.API.InfoFormat("add task:{0}", taskId);
            }
            return(JsonUtil.GetJObjectPropVal <string>(queryObjectResult.Data, "taskName"));
        }
        /// <summary>
        /// 上传固件任务。
        /// </summary>
        /// <param name="basePackage"></param>
        /// <returns></returns>
        public string UploadBasePackage(BasePackage basePackage)
        {
            StringBuilder sb      = new StringBuilder(ConstMgr.HWESightHost.URL_UPLOADE_BASEPACKAGE);
            int           retCode = 0;
            JObject       jResult = ESSession.HCPost(sb.ToString(), basePackage);

            CheckAndThrowException(jResult);
            HWESightTask eSightTask = HWESightTaskDal.Instance.FindTaskByBasepackageName(this.ESSession.HWESightHost.ID, basePackage.BasepackageName);

            if (eSightTask == null)
            {
                eSightTask = new HWESightTask();
            }
            else
            {
                LogUtil.HWLogger.API.WarnFormat("Find same package name in the database, the data will be overwrite=[{0}]", basePackage.BasepackageName);
            }
            string taskName = "";
            QueryObjectResult <JObject> queryObjectResult = jResult.ToObject <QueryObjectResult <JObject> >();

            if (queryObjectResult.Code == 0)
            {
                taskName = JsonUtil.GetJObjectPropVal <string>(queryObjectResult.Data, "taskName");
                //Save to database.
                eSightTask.HWESightHostID     = this.ESSession.HWESightHost.ID;
                eSightTask.TaskName           = taskName;
                eSightTask.SoftWareSourceName = basePackage.BasepackageName;
                eSightTask.ReservedStr1       = basePackage.BasepackageType;
                eSightTask.TaskStatus         = ConstMgr.HWESightTask.TASK_STATUS_RUNNING;//初始化。
                eSightTask.TaskProgress       = 0;
                eSightTask.TaskResult         = "";
                eSightTask.ErrorDetail        = "";
                eSightTask.SyncStatus         = ConstMgr.HWESightTask.SYNC_STATUS_CREATED;
                eSightTask.TaskType           = ConstMgr.HWESightTask.TASK_TYPE_FIRMWARE;
                eSightTask.LastModifyTime     = System.DateTime.Now;
                eSightTask.CreateTime         = System.DateTime.Now;
                int taskId = HWESightTaskDal.Instance.InsertEntity(eSightTask);
                LogUtil.HWLogger.API.InfoFormat("add task:{0}", taskId);
            }
            return(taskName);
        }
        public DeployPackageTaskDetail QueryDeployTaskProcess(string taskName)
        {
            StringBuilder sb = new StringBuilder(ConstMgr.HWESightHost.URL_TASK_PROGRESS_BASEPACKAGE);

            sb.Append("?taskName=").Append(HttpUtility.UrlEncode(taskName, Encoding.UTF8));
            JObject jResult = ESSession.HCGet(sb.ToString());

            CheckAndThrowException(jResult);
            QueryObjectResult <DeployPackageTaskDetail> queryObjectResult = jResult.ToObject <QueryObjectResult <DeployPackageTaskDetail> >();
            //sync to the database.
            HWESightTask hwtask = HWESightTaskDal.Instance.FindTaskByName(this.ESSession.HWESightHost.ID, taskName);

            if (hwtask == null)
            {
                throw new BasePackageExpceion(ConstMgr.ErrorCode.DB_NOTFOUND, this, string.Format("Find task failed, system can't find this task.[{0}]", taskName));
            }
            else
            {
                SaveDeployProgressToDB(queryObjectResult, taskName);
            }
            return(queryObjectResult.Data);
        }
        /// <summary>
        /// 上传软件源,直接返回结果。
        /// 不抛出错误
        /// </summary>
        /// <param name="softwareSource">软件源参数</param>
        /// <returns>QueryObjectResult[taskname]</returns>
        public QueryObjectResult <JObject> UploadSoftwareSourceWithResult(SoftwareSource softwareSource)
        {
            StringBuilder sb      = new StringBuilder(ConstMgr.HWESightHost.URL_UPLOADE_SOFTWARESOURCE);
            JObject       jResult = ESSession.HCPost(sb.ToString(), softwareSource); //提交eSight服务器

            CheckAndThrowException(jResult);                                         //检测提交错误。
            HWESightTask eSightTask = HWESightTaskDal.Instance.FindTaskBySourceName(this.ESSession.HWESightHost.ID, softwareSource.SoftwareName);

            if (eSightTask == null)//不是重复任务,创建任务对象。
            {
                eSightTask = new HWESightTask();
            }
            else//重复的任务。
            {
                LogUtil.HWLogger.API.WarnFormat("Find same source in the database, the data will be overwite=[{0}]", softwareSource.SoftwareName);
            }
            string taskName = "";                                                                              //eSight返回的任务名。
            QueryObjectResult <JObject> queryObjectResult = jResult.ToObject <QueryObjectResult <JObject> >(); //转换Json对象为期待的序列化对象。

            if (queryObjectResult.Code == 0)                                                                   //成功
            {
                taskName = JsonUtil.GetJObjectPropVal <string>(queryObjectResult.Data, "taskName");
                //Save to database.
                eSightTask.HWESightHostID     = this.ESSession.HWESightHost.ID;
                eSightTask.TaskName           = taskName;
                eSightTask.SoftWareSourceName = softwareSource.SoftwareName;
                eSightTask.TaskStatus         = ConstMgr.HWESightTask.TASK_STATUS_RUNNING;//初始化。
                eSightTask.TaskProgress       = 0;
                eSightTask.TaskResult         = "";
                eSightTask.ErrorDetail        = "";
                eSightTask.SyncStatus         = ConstMgr.HWESightTask.SYNC_STATUS_CREATED;
                eSightTask.TaskType           = ConstMgr.HWESightTask.TASK_TYPE_SOFTWARE;
                eSightTask.LastModifyTime     = System.DateTime.Now;
                eSightTask.CreateTime         = System.DateTime.Now;
                int taskId = HWESightTaskDal.Instance.InsertEntity(eSightTask);
                LogUtil.HWLogger.API.InfoFormat("Add task:{0}", taskId);
            }
            return(queryObjectResult);
        }
        private void SaveUploadProgressToDB(QueryObjectResult <BasePackageProgress> queryObjectResult, string taskName)
        {
            //sync to the database.
            BasePackageProgress basePackageProgess = queryObjectResult.Data;
            HWESightTask        hwtask             = HWESightTaskDal.Instance.FindTaskByName(this.ESSession.HWESightHost.ID, taskName);

            if (hwtask == null)
            {
                throw new BasePackageExpceion(ConstMgr.ErrorCode.DB_NOTFOUND, this, string.Format("Find upload package progress filed: System can not find this task in the database[{0}]", taskName));
            }
            else
            {
                hwtask.TaskStatus   = basePackageProgess.TaskStatus;
                hwtask.TaskProgress = basePackageProgess.TaskProgress;
                hwtask.TaskResult   = basePackageProgess.TaskResult;
                hwtask.TaskCode     = (!string.IsNullOrEmpty(basePackageProgess.TaskCode) && !string.Equals(basePackageProgess.TaskCode, "0"))?
                                      (errorPix + basePackageProgess.TaskCode):basePackageProgess.TaskCode;
                hwtask.ErrorDetail    = basePackageProgess.ErrorDetail;
                hwtask.SyncStatus     = GetTaskStatus(hwtask.SyncStatus, basePackageProgess.TaskStatus, basePackageProgess.TaskResult);
                hwtask.LastModifyTime = System.DateTime.Now;
                HWESightTaskDal.Instance.UpdateEntity(hwtask);
            }
        }
        /// <summary>
        /// 查询部署任务状态,从eSight
        /// </summary>
        /// <param name="taskName">任务名称</param>
        /// <returns>部署任务明细对象</returns>
        private DeployProgress QueryDeployProcess(string taskName)
        {
            StringBuilder sb = new StringBuilder(ConstMgr.HWESightHost.URL_PROGRESS_DEPLOY);

            sb.Append("?taskName=").Append(HttpUtility.UrlEncode(taskName, Encoding.UTF8));
            JObject jResult = ESSession.HCGet(sb.ToString());

            CheckAndThrowException(jResult);
            QueryObjectResult <DeployProgress> queryObjectResult = jResult.ToObject <QueryObjectResult <DeployProgress> >(new JsonSerializer {
                NullValueHandling = NullValueHandling.Ignore
            });
            //sync to the database.
            HWESightTask hwtask = HWESightTaskDal.Instance.FindTaskByName(this.ESSession.HWESightHost.ID, taskName);

            if (hwtask == null)//在数据库中没有找到,抛出错误。
            {
                throw new DeployException(ConstMgr.ErrorCode.DB_NOTFOUND, this, string.Format("Query the deployWork failed:System can not find this task in db.[{0}]", taskName));
            }
            else
            {
                SaveTaskProgressToDB(queryObjectResult, taskName);
            }
            return(queryObjectResult.Data);
        }
        /// <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);
            }
        }