Exemple #1
0
        public int Update(error_type_details obj)
        {
            int count = ECDS.UpdateTypeDetails(obj);

            return(count);
        }
Exemple #2
0
        public error_type_details SelectSingle(string code_no = null, int id = -1)
        {
            error_type_details obj = ECDS.GetTypeDetails(id, code_no);

            return(obj);
        }
Exemple #3
0
        public int Insert(error_type_details obj)
        {
            int count = ECDS.InsertTypeDetails(obj);

            return(count);
        }
        /// <summary>
        /// 确认并解除异常记录,用于现场提交解除.
        /// 支持三种格式:sn或者id&sn,id&M&M
        /// 格式1:只有card内容时,为HMI触控屏发送的格式,此方式只能确认第一条记录,HMI触控屏无物料呼叫列表;
        /// </summary>
        /// <param name="ErrorWatchList">当前监控队列</param>
        /// <param name="MachineCode">设备编码</param>
        /// <param name="StationId">站位id</param>
        /// <param name="TagValueInItem">标签值对象</param>
        /// <returns>正确执行返回ErrorObject,错误执行返回null</returns>
        public ErrorObject AckErrorLogDetails(string MachineCode, int StationId,
                                              DeviceTagValueInfo TagValueInItem,
                                              TagAreaAttributeEnum tagAreaAttributeEnum)
        {
            ErrorTypeService   errorTypeService = new ErrorTypeService();
            error_type_details eDetails         = null;
            ErrorObject        errorObject      = null;
            string             TypeSn           = string.Empty;
            int errorLogId = -1;
            Dictionary <string, object> dic = new Dictionary <string, object>();//加入需要更新的字段信息

            //支持两种格式,sn或者id&sn,id为异常记录的唯一标识号
            TagIdAndValue valueObject = tagService.GetTagValue(TagValueInItem.tag_value);

            if (tagAreaAttributeEnum == TagAreaAttributeEnum.machine_info)
            {
                MachineInfo machine = AndonGlobalCfg.MachinesList.FirstOrDefault(x => x.machine_code == MachineCode);
                errorObject = LoadErrorLogObject(TagValueInItem.device_id, TagValueInItem.system_tag_code, machine.unit_no, machine.line_id);
            }
            else if (tagAreaAttributeEnum == TagAreaAttributeEnum.station_info)
            {
                station_info station = AndonGlobalCfg.StationsList.FirstOrDefault(x => x.station_id == StationId);
                errorObject = LoadErrorLogObject(TagValueInItem.device_id, TagValueInItem.system_tag_code, station.unit_no, station.line_id);
            }

            if (errorObject != null && errorObject.eConfig != null &&
                errorObject.eConfig.check_ack == (int)AckModeEnum.CodeAck)
            {
                if (valueObject.value != null && valueObject.value.Trim().Length >= 0)
                {
                    if (valueObject.id >= 0 && valueObject.value.Length > 0 && valueObject.value2.Length == 0)
                    {
                        errorLogId = valueObject.id;
                        TypeSn     = valueObject.value;
                        Console.WriteLine("AckErrorLogDetails,errorLogId=" + errorLogId + ",TypeSn=" + TypeSn);
                    }

                    else if (valueObject.id < 0 && valueObject.value.Length > 0)
                    {
                        TypeSn = valueObject.value;
                        Console.WriteLine("AckErrorLogDetails,TypeSn=" + TypeSn);
                    }
                }

                if (TypeSn.Length > 0)//获取具体的描述对象
                {
                    eDetails = errorTypeService.GetTypeDetails(-1, TypeSn);
                    if (eDetails == null)
                    {
                        return(null);
                    }
                }
                else
                {
                    return(null);
                }
            }
            else if (errorObject != null && errorObject.eConfig != null &&
                     errorObject.eConfig.check_ack == (int)AckModeEnum.WithoutCodeAck)//不需要代码解除的
            {
                int.TryParse(valueObject.value, out errorLogId);
                if (errorLogId != errorObject.ELog.id)//传递的id不匹配
                {
                    Console.WriteLine("安灯解除出错,id不匹配退出:errorLogId=" + errorLogId + "errorObject.ELog.id=" + errorObject.ELog.id);
                    return(null);
                }
            }

            if (errorObject != null && errorObject.ELog != null)
            {
                if (errorObject.eConfig.check_ack == (int)AckModeEnum.CodeAck)
                {
                    errorObject.ELog.error_type_id    = eDetails.id; //更新具体的id信息
                    errorObject.eTypeDetails          = eDetails;    //记录详细原因
                    errorObject.ELog.maintenance_time = TagValueInItem.insert_time.AddHours(GlobalDefine.SysTimeZone);
                    dic.Add("maintenance_time", errorObject.ELog.maintenance_time);
                    dic.Add("error_type_id", errorObject.ELog.error_type_id);//未确认原因的再给值。物料呼叫监测typeid会提前赋值
                }

                errorObject.ELog.release_time = TagValueInItem.insert_time.AddHours(GlobalDefine.SysTimeZone);  //以变量值的时间更新结束时间
                dic.Add("release_time", errorObject.ELog.release_time);

                int count = errorLogManager.Update(errorObject.ELog, dic);        //提交数据库
                if (count > 0)
                {
                    Console.WriteLine("AckErrorLogDetails,确认成功,id=" + errorObject.ELog.id);
                }
                else
                {
                    Console.WriteLine("安灯解除更新数据失败!");
                }
                return(errorObject);
            }
            else
            {
                Console.WriteLine("安灯解除出错,errorObject != null && errorObject.ELog !=null 失败!");
            }

            return(null);
        }