コード例 #1
0
        /// <summary>
        /// 增加设备新的异常记录。会将该异常的所有配置,记录,人员,类型对象一次性加载并返回
        /// </summary>
        /// <param name="TagValueObject"></param>
        /// <param name="eCodeDeatials"></param>
        /// <returns>ErrorObject:包含该异常的配置,记录,需要通知的人员,以及类型</returns>
        public ErrorObject AddNewErrorLog(DeviceTagValueInfo TagValueObject, ErrorObject errorObject,
                                          TagAreaAttributeEnum tagAreaAttributeEnum, string AppendDetailsInfo = "")
        {
            int                  id             = -1;
            error_log            eLog           = new error_log();
            MachineInfo          machine        = null;
            station_info         station        = null;
            Pro_schedule_machine deviceSchedule = null;

            if (tagAreaAttributeEnum == TagAreaAttributeEnum.machine_info)//设备形式
            {
                machine        = AndonGlobalCfg.MachinesList.FirstOrDefault(x => x.machine_code == TagValueObject.device_code);
                deviceSchedule = proScheduleMachineManager.SelectOnLineWorkorder(TagValueObject.device_code);
            }
            else if (tagAreaAttributeEnum == TagAreaAttributeEnum.station_info)//站位形式
            {
                station        = AndonGlobalCfg.StationsList.FirstOrDefault(x => x.station_id == TagValueObject.device_id);
                deviceSchedule = proScheduleMachineManager.SelectOnLineWorkorder(TagValueObject.device_code);
            }

            if (machine != null || station != null)
            {
                if (deviceSchedule != null)//从在制进度中获取工单机种
                {
                    eLog.pn         = deviceSchedule.part_num;
                    eLog.work_order = deviceSchedule.work_order;
                }
                if (TagValueObject.system_tag_code == SystemTagCodeEnum.machine_time_error.ToString())    //工时异常类型
                {
                    eLog.start_time = TagValueObject.insert_time;                                         //CT从CT模块过来,无时差
                }
                else if (TagValueObject.system_tag_code == SystemTagCodeEnum.material_require.ToString()) //物料呼叫类型
                {
                    eLog.start_time = TagValueObject.insert_time.AddHours(GlobalDefine.SysTimeZone);      //加上时区
                    int requireCount = 0, materialId = 0;
                    //支持两种格式:数量,数量&物料id
                    TagIdAndValue valueObject = tagService.GetTagValue(TagValueObject.tag_value);
                    if (valueObject.id > 0 && valueObject.value.Length > 0)
                    {
                        requireCount = valueObject.id;
                        int.TryParse(valueObject.value, out materialId); //id为物料呼叫的id
                        eLog.error_type_id = materialId;                 //物料呼叫的id直接给到error_type_id字段
                    }
                }
                else
                {
                    eLog.start_time = TagValueObject.insert_time.AddHours(GlobalDefine.SysTimeZone); //加上时区
                }
                eLog.arrival_time     = default(DateTime);                                           //分配默认时间
                eLog.release_time     = default(DateTime);                                           //分配默认时间
                eLog.maintenance_time = default(DateTime);                                           //分配默认时间
                if (machine != null)
                {
                    eLog.machine_code = TagValueObject.device_code;
                    eLog.station_id   = machine.station_id;
                    eLog.line_id      = machine.line_id;
                    eLog.unit_no      = machine.unit_no;
                }
                else
                {
                    eLog.station_id   = station.station_id;
                    eLog.machine_code = station.station_name_en;
                    eLog.line_id      = station.line_id;
                    eLog.unit_no      = station.unit_no;
                }

                eLog.system_tag_code = TagValueObject.system_tag_code;
                eLog.error_name      = errorObject.eConfig.error_name + AppendDetailsInfo;

                if (errorObject.eConfig.check_ack == (int)AckModeEnum.NoAck)//只是记录,不需要确认
                {
                    eLog.release_time = eLog.start_time;
                }
                eLog.ack_person_id = -1;//确认人员为空
                if (eLog.error_type_id == 0)
                {
                    eLog.error_type_id = -1;//确认编码为空
                }

                id = errorLogManager.Insert(eLog);     //插入数据库
                if (id > 0)
                {
                    eLog.id          = id; //id记录
                    errorObject.ELog = eLog;
                }
            }

            return(errorObject);
        }
コード例 #2
0
        /// <summary>
        /// 根据Tag值信息加载所有信息.外部处理进入,需要确认和优化??????????
        /// </summary>
        /// <param name="TagValueObject"></param>
        /// <param name="tagAreaAttributeEnum"></param>
        /// <returns></returns>
        public ErrorObject LoadErrorObject(DeviceTagValueInfo TagValueObject, TagAreaAttributeEnum tagAreaAttributeEnum)
        {
            ErrorObject            errorObject = new ErrorObject();
            List <error_config_pn> eCfgPns;
            string partNo = string.Empty;//当前机种
            Pro_schedule_machine deviceSchedule = null;

            if (tagAreaAttributeEnum == TagAreaAttributeEnum.machine_info)//设备形式
            {
                MachineInfo machine = AndonGlobalCfg.MachinesList.FirstOrDefault(x => x.machine_id == TagValueObject.device_id);
                if (machine != null)
                {
                    errorObject.eConfig = errorConfigManager.GetFirstErrorConfig(TagValueObject.system_tag_code, machine.unit_no, machine.line_id);
                    if (errorObject.eConfig == null)
                    {
                        errorObject.eConfig = errorConfigManager.GetFirstErrorConfig(TagValueObject.system_tag_code, machine.unit_no);
                    }
                }
            }
            else if (tagAreaAttributeEnum == TagAreaAttributeEnum.station_info)//站位形式
            {
                station_info station = AndonGlobalCfg.StationsList.FirstOrDefault(x => x.station_id == TagValueObject.device_id);
                if (station != null)
                {
                    errorObject.eConfig = errorConfigManager.GetFirstErrorConfig(TagValueObject.system_tag_code, station.unit_no, station.line_id);
                    if (errorObject.eConfig == null)
                    {
                        errorObject.eConfig = errorConfigManager.GetFirstErrorConfig(TagValueObject.system_tag_code, station.unit_no);
                    }
                }
            }

            if (errorObject.eConfig == null)
            {
                return(errorObject);
            }
            errorObject.DeviceCode = TagValueObject.device_code;

            if (TagValueObject.system_type_code == SystemTagCodeEnum.quality_error.ToString())
            {
                eCfgPns        = errorConfigPnManager.GetCfgPns(errorObject.eConfig.id);//获取该异常配置的机种信息
                deviceSchedule = proScheduleMachineManager.SelectOnLineWorkorder(TagValueObject.device_code);
                if (deviceSchedule != null)
                {
                    partNo = deviceSchedule.part_num;//获取当前机种
                }
                if (eCfgPns != null && eCfgPns.Count > 0)
                {
                    if (eCfgPns.Any(x => x.part_num.Equals(partNo))) //当前机种在此配置里面
                    {
                        errorObject.eCfgPnList = eCfgPns;
                    }
                }
            }
            if (errorObject.eConfig != null)
            {
                errorObject.eCfgPersonList = errorPersonManager.GetCfgPersonList(errorObject.eConfig.id);  //需通知的配置人员加载

                eCfgPns = errorConfigPnManager.GetCfgPns(errorObject.eConfig.id);
                errorObject.eCfgPnList = eCfgPns;          //关联的机种信息加载
            }

            return(errorObject);
        }