/// <summary> /// 根据模具号获得模具基本信息 /// </summary> /// <param name="moldNR">模具号</param> /// <returns>模具基本信息</returns> public MoldBaseInfo GetMoldBaseInfoByNR(string moldNR) { using (IUnitOfWork unitwork = MSSqlHelper.DataContext()) { IMoldRepository moldRepostitory = new MoldRepository(unitwork); IAttachmentRepository attachRep = new AttachmentRepository(unitwork); IPositionRepository posiRep = new PositionRepository(unitwork); MoldView m = moldRepostitory.GetMoldViewByMoldNR(moldNR); if (m != null) { MoldBaseInfo mb = new MoldBaseInfo() { MoldNR = m.MoldNR, Name = m.Name, Type = m.TypeName, Position = posiRep.GetByFacilictyNR(moldNR).PositionNR, Producer = m.Producer, Material = m.Material, Weight = m.Weight == null ? string.Empty : m.Weight.ToString(), State = m.State, StateCN = m.StateCN, ProjectId = m.ProjectID, ProjectName = m.ProjectName, Attach = attachRep.GetByMasterNR(moldNR) }; return(mb); } return(null); } }
/// <summary> /// 根据模具号获得库位号 /// </summary> /// <param name="moldNR">模具号</param> /// <returns>库位号</returns> public string GetMoldCurrentPosition(string moldNR) { using (IUnitOfWork unitwork = MSSqlHelper.DataContext()) { IMoldRepository moldRepostitory = new MoldRepository(unitwork); MoldView moldview = moldRepostitory.GetMoldViewByMoldNR(moldNR); return(moldview.StorageRecordNR == null ? string.Empty : moldRepostitory.GetMoldCurrPosiByRecordNR((Guid)moldview.StorageRecordNR)); } }
/// <summary> /// 根据模具号获得模具动态信息 /// </summary> /// <param name="moldNR">模具号</param> /// <returns>模具基本信息</returns> public MoldDynamicInfo GetMoldDynamicInfoByMoldNR(string moldNR) { using (IUnitOfWork unitwork = MSSqlHelper.DataContext()) { IMoldRepository moldRepostitory = new MoldRepository(unitwork); MoldView moldview = moldRepostitory.GetMoldViewByMoldNR(moldNR); if (moldview == null) { return(null); } IStorageRecordRepository storageRep = new StorageRecordRepository(unitwork); StorageRecord storageRecord = null; if (moldview.StorageRecordNR != null) { storageRecord = storageRep.GetByStorageNR((Guid)moldview.StorageRecordNR); } MoldDynamicInfo moldDynamicInfo = new MoldDynamicInfo() { CurrentPosition = moldview.StorageRecordNR == null ? string.Empty : moldRepostitory.GetMoldCurrPosiByRecordNR((Guid)moldview.StorageRecordNR), Operator = storageRecord == null ? string.Empty : storageRecord.OperatorId, OperateTime = storageRecord == null ? string.Empty : storageRecord.Date.ToString(), AllowedCuttedTime = moldview.MaxCuttimes, CurrentCuttedTime = moldview.CurrentCuttimes, ReleaseCycle = moldview.ReleaseCycle, LastReleasedTime = moldview.LastReleasedDate.ToString(), MantainCycle = moldview.MaintainCycle, LastMantainTime = moldview.LastMainedDate.ToString(), State = moldview.State, StateCN = EnumUtil.GetEnumDescriptionByEnumValue(moldview.State), ProjectId = moldview.ProjectID, ProjectName = moldview.ProjectName }; return(moldDynamicInfo); } }
/// <summary> /// 模具移动工作台 /// </summary> /// <param name="moldNR">模具号</param> /// <param name="operatorNR">操作员工号</param> /// <param name="targetWStationNR">目标工作台号</param> /// <returns>移动信息</returns> public Message MoldMoveWorkStation(string moldNR, string operatorNR, string targetWStationNR) { try { using (IUnitOfWork unitwork = MSSqlHelper.DataContext()) { IWorkstationRepository workstationRep = new WorkstationRepository(unitwork); IMoldRepository moldRep = new MoldRepository(unitwork); IEmployeeRepository empRep = new EmployeeRepository(unitwork); Mold mold = moldRep.GetById(moldNR); if (!empRep.Exist(operatorNR)) { return new Message() { MsgType = MsgType.Warn, Content = "操作员不存在!" } } ; if (mold == null) { return new Message() { MsgType = MsgType.Warn, Content = "模具不存在!" } } ; Workstation tworkstation = workstationRep.GetById(targetWStationNR); if (tworkstation == null) { return new Message() { MsgType = MsgType.Warn, Content = "目标工作台不存在!" } } ; // check mold is available for move if (mold.State != MoldStateType.NotReturned) { return new Message() { MsgType = MsgType.Warn, Content = "模具未被借用,请先借用!" } } ; MoldView moldview = moldRep.GetMoldViewByMoldNR(moldNR); string currentWorkPosi = moldview.StorageRecordNR == null ? string.Empty : moldRep.GetMoldCurrPosiByRecordNR((Guid)moldview.StorageRecordNR); // if(workstationRep.GetById(currentWorkPosi)==null) // return new Message() { MsgType = MsgType.Warn, Content = "模具正在使用的工作台号已经被修改,请先归还此模具再做后续操作!" }; if (currentWorkPosi.Equals(targetWStationNR)) { return new Message() { MsgType = MsgType.Warn, Content = "模具已经在此工作台,不可重复移动!" } } ; // check workstaition reach the max mold apply number if (workstationRep.OverAppliedMold(targetWStationNR) == false && Settings.Default.AllowOverApply == false) { return new Message() { MsgType = MsgType.Warn, Content = "目标工作台已经到达模具使用上限!" } } ; IPositionRepository positionRep = new PositionRepository(unitwork); Position position = positionRep.GetByFacilictyNR(moldNR); //set value of storage record IStorageRecordRepository recordRep = new StorageRecordRepository(unitwork); StorageRecord storageRecord = new StorageRecord(); storageRecord.StorageRecordNR = GuidUtil.GenerateGUID(); storageRecord.PositionId = position.PositionID; storageRecord.Source = currentWorkPosi; storageRecord.Destination = targetWStationNR; storageRecord.OperatorId = operatorNR; storageRecord.Quantity = 1; storageRecord.Date = DateTime.Now; storageRecord.TargetNR = moldNR; storageRecord.RecordType = StorageRecordType.MoveWStation; // add new storage record recordRep.Add(storageRecord); // update mold last apply storage record nr IMoldLastRecordRepository lastRecordRep = new MoldLastRecordRepository(unitwork); MoldLastRecord lastRecord = lastRecordRep.GetByMoldNR(moldNR); lastRecord.StorageRecordNR = storageRecord.StorageRecordNR; // update the workstation current mold count //Workstation tworkstation = workstationRep.GetById(storageRecord.Destination); //if(tworkstation!=null) tworkstation.CurrentMoldCount++; Workstation sworkstation = workstationRep.GetById(storageRecord.Source); if (sworkstation != null) { sworkstation.CurrentMoldCount--; } unitwork.Submit(); return(new Message() { MsgType = MsgType.OK, Content = "移动工作台成功!" }); } } catch (Exception ex) { LogUtil.log.Error(ex.ToString()); return(new Message() { MsgType = MsgType.Error, Content = "请核实所填数据的准确性" }); } }