Esempio n. 1
0
        /// <summary>
        /// 产前7天任务
        /// </summary>
        public void CompleteDay7ToBorn(DairyTask task, int cowHouseId, int cowGroupId)
        {
            // 更新任务记录,标记完成
            UpdateTask(task);

            // 产生调群任务,进产房
            DairyTask groupingTask = new DairyTask();

            groupingTask.TaskType = TaskType.GroupingTask;
            DateTime time = DateTime.Now;

            groupingTask.ArrivalTime = time;
            groupingTask.InputTime   = time;
            groupingTask.EarNum      = task.EarNum;
            groupingTask.DeadLine    = time.AddDays(1.0);
            AddTask(groupingTask);

            // 取回这条任务
            DairyTask groupingTaskCopy = GetUnfinishedTasks(UserBLL.Instance.CurrentUser.Pasture.ID).Find(p => p.ArrivalTime == time && p.TaskType == TaskType.GroupingTask);
            // 关联调群记录,任务单找到如何调群
            GroupingRecord groupingRecord = new GroupingRecord();

            groupingRecord.EarNum = groupingTaskCopy.EarNum;
            groupingRecord.TaskID = groupingTaskCopy.ID;
            CowBLL cowBLL = new CowBLL();
            Cow    myCow  = cowBLL.GetCowInfo(groupingTaskCopy.EarNum);

            groupingRecord.OriginalGroupID = myCow.GroupID;
            groupingRecord.OriginalHouseID = myCow.HouseID;
            groupingRecord.TargetGroupID   = cowGroupId;
            groupingRecord.TargetHouseID   = cowHouseId;
            GroupingRecordBLL gBLL = new GroupingRecordBLL();

            gBLL.InsertGroupingRecord(groupingRecord);
        }
Esempio n. 2
0
        public CowInfo(int earNum)
        {
            CowBLL cb = new CowBLL();

            this.earNum      = earNum;
            myCow            = cb.GetCowInfo(earNum);
            this.calvingList = CowInfo.GetCowCalvingRecords(earNum);
            this.dryMilkList = CowInfo.GetDryMilkRecords(earNum);
            this.parity      = this.calvingList.Count;
        }
Esempio n. 3
0
        /// <summary>
        /// 在产犊界面调用本方法
        /// 产生产后三任务
        /// </summary>
        /// <param name="calving"></param>
        public void CreateAfterBornTasks(Calving calving)
        {
            // 分配兽医,饲养员
            CowGroupBLL g  = new CowGroupBLL();
            CowBLL      c  = new CowBLL();
            Cow         cc = c.GetCowInfo(calving.EarNum);
            CowGroup    gg = g.GetCowGroupList(cc.FarmCode).Find(p => p.ID == cc.GroupID);

            // 产犊界面,输入产犊信息,调用本方法产生3个产后任务和犊牛饲喂任务
            DairyTask t1 = new DairyTask();

            t1.PastureID   = gg.PastureID;
            t1.EarNum      = calving.EarNum;
            t1.ArrivalTime = calving.Birthday.AddDays(3.0);
            t1.DeadLine    = t1.ArrivalTime.AddDays(1.0);
            t1.OperatorID  = gg.DoctorID;
            t1.TaskType    = TaskType.Day3AfterBornTask;
            t1.InputTime   = DateTime.Now;
            this.AddTask(t1);

            DairyTask t2 = new DairyTask();

            t2.PastureID   = gg.PastureID;
            t2.EarNum      = calving.EarNum;
            t2.ArrivalTime = calving.Birthday.AddDays(10.0);
            t2.DeadLine    = t2.ArrivalTime.AddDays(1.0);
            t2.OperatorID  = gg.DoctorID;
            t2.TaskType    = TaskType.Day10AfterBornTask;
            t2.InputTime   = DateTime.Now;
            this.AddTask(t2);

            DairyTask t3 = new DairyTask();

            t3.PastureID   = gg.PastureID;
            t3.EarNum      = calving.EarNum;
            t3.ArrivalTime = calving.Birthday.AddDays(15.0);
            t3.DeadLine    = t3.ArrivalTime.AddDays(1.0);
            t3.OperatorID  = gg.DoctorID;
            t3.TaskType    = TaskType.Day15AfterBornTask;
            t3.InputTime   = DateTime.Now;
            this.AddTask(t3);

            return;
        }
Esempio n. 4
0
        /// <summary>
        /// 分群任务
        /// </summary>
        public void CompleteGrouping(DairyTask task)
        {
            //各种事件触发产生分群要求,产生任务单
            //饲养员按要求操作,回填完成时间
            task.Status       = DairyTaskStatus.Completed;
            task.CompleteTime = DateTime.Now;
            task.InputTime    = DateTime.Now;
            UpdateTask(task);


            //更新牛的牛群号,牛舍号
            CowBLL            cowBLL = new CowBLL();
            Cow               myCow  = cowBLL.GetCowInfo(task.EarNum);
            GroupingRecordBLL gBLL   = new GroupingRecordBLL();
            GroupingRecord    record = gBLL.GetGroupingRecordByTaskID(task.ID);

            myCow.GroupID = record.TargetGroupID;
            myCow.HouseID = record.TargetHouseID;
            cowBLL.UpdateCowGroupAndHouse(myCow.EarNum, myCow.GroupID, myCow.HouseID);
        }
Esempio n. 5
0
        /// <summary>
        /// 取牧场某牛的饲养员、配种员或兽医的责任人ID
        /// </summary>
        /// <param name="pastureID">牧场ID</param>
        /// <param name="earNum">耳号</param>
        /// <param name="roleID">角色ID</param>
        /// <returns></returns>
        public int AssignTask(int pastureID, int earNum, int roleID)
        {
            int         userID;
            CowGroupBLL g        = new CowGroupBLL();
            CowBLL      c        = new CowBLL();
            Cow         cc       = c.GetCowInfo(earNum);
            CowGroup    cowGroup = g.GetCowGroupList(pastureID).Find(p => p.ID == cc.GroupID);

            if (cowGroup != null && cowGroup.InsemOperatorID != 0)
            {
                userID = cowGroup.InsemOperatorID;
            }
            else
            {
                //牛群未分配,则分配给场长
                userID = UserBLL.Instance.GetUsers(UserBLL.Instance.CurrentUser.Pasture.ID, Role.FARM_ADMIN_ID)[0].ID;
            }

            return(userID);
        }
Esempio n. 6
0
        /// <summary>
        /// 取本轮配种记录列表
        /// </summary>
        /// <param name="earNum"></param>
        /// <returns></returns>
        public static List <Insemination> GetInseminationListOfCurrentBreedPeriod(int earNum)
        {
            InseminationBLL bllInsem      = new InseminationBLL();
            DateTime        latestCalTime = new DateTime(1900, 1, 1);
            Calving         cal           = GetLatestCalving(earNum);

            if (cal != null)
            {
                latestCalTime = cal.Birthday;
            }
            else
            {
                CowBLL cb    = new CowBLL();
                Cow    myCow = cb.GetCowInfo(earNum);
                latestCalTime = myCow.BirthDate;
            }
            List <Insemination> list = bllInsem.GetInseminationList(earNum, latestCalTime);

            return(list);
        }
Esempio n. 7
0
        /// <summary>
        /// 产后10天任务
        /// </summary>
        public void CompleteDay10AfterBorn(DairyTask task, int cowHouseId, int cowGroupId)
        {
            //此任务单在,产犊界面/事件中产生,或者流产早产;流产等会取消之前的未完成产前任务单
            //更新任务记录,标记完成
            task.Status       = DairyTaskStatus.Completed;
            task.CompleteTime = DateTime.Now;
            UpdateTask(task);

            //牛调群至,初产牛群或高产牛群
            DairyTask groupingTask = new DairyTask();

            groupingTask.TaskType = TaskType.GroupingTask;
            DateTime time = DateTime.Now;

            groupingTask.ArrivalTime = time;
            groupingTask.EarNum      = task.EarNum;
            groupingTask.DeadLine    = time.AddDays(1.0);
            AddTask(groupingTask);
            //取回这条任务
            DairyTask groupingTaskCopy = GetUnfinishedTasks(UserBLL.Instance.CurrentUser.Pasture.ID).Find(p => p.ArrivalTime == time && p.TaskType == TaskType.GroupingTask);
            //关联调群记录,任务单找到如何调群
            GroupingRecord groupingRecord = new GroupingRecord();

            groupingRecord.EarNum = groupingTaskCopy.EarNum;
            groupingRecord.TaskID = groupingTaskCopy.ID;
            CowBLL cowBLL = new CowBLL();
            Cow    myCow  = cowBLL.GetCowInfo(groupingTaskCopy.EarNum);

            groupingRecord.OriginalGroupID = myCow.GroupID;
            groupingRecord.OriginalHouseID = myCow.HouseID;
            groupingRecord.TargetGroupID   = cowGroupId;
            groupingRecord.TargetHouseID   = cowHouseId;
            GroupingRecordBLL gBLL = new GroupingRecordBLL();

            gBLL.InsertGroupingRecord(groupingRecord);
        }