//添加到货通知单
        public bool AddArrivalNoticeForPurchase(string purchaseId, Users operators, IList <PurchaseOrderDetail> items)
        {
            ArrivalNoticeType type   = new ArrivalNoticeType(1, "采购");
            ArrivalNotice     notice = new ArrivalNotice(type, purchaseId, 1, operators);

            foreach (PurchaseOrderDetail one in items)
            {
                notice.AddArrivalNoticeDetail(operators.Id, one.Id, one.Product, one.Qty);
            }
            this._arrivalNoticeRepository.Save(notice);
            this._uow.Commit();
            return(true);
        }
        /// <summary>
        /// 添加到货单
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public bool AddArrivalReceiptDetail(AddArrivalReceiptDetailRequest request)
        {
            //获取通知到货明细
            ArrivalNoticeDetail model = this._arrivalNoticeDetailRepository.FindBy(request.ArrivalNoticeId);

            if (model == null)
            {
                throw new EntityIsInvalidException <string>(request.PurchaseOrderDetailId.ToString());
            }

            //添加到货单
            AddArrivalReceiptRequest addreceipt = new AddArrivalReceiptRequest();

            addreceipt.CreateUserId = request.CreateUserId;
            addreceipt.Note         = "";
            ArrivalReceipt receipt = this._arrivalReceiptService.AddArrivalReceipt(addreceipt);

            //添加到货明细
            model.AddReceiptDetail(receipt, request.Qty, request.Note, request.CreateUserId);
            this._arrivalNoticeDetailRepository.Save(model);
            this._uow.Commit();

            //看看到货单的所有产品是否已经都到货了
            ArrivalNotice notice = this._arrivalNoticeRepository.FindBy(model.ArrivalNotice.Id);

            if (notice.State == 1)
            {
                //刷新通知到货单状态
                notice.RefreshState();
                if (notice.State == 2)
                {
                    //调整采购单状态
                    AddWorkflowActivityRequest request_ac = new AddWorkflowActivityRequest();
                    request_ac.ObjectId       = notice.ObjectId.ToString();
                    request_ac.ObjectTypeId   = "PurchaseOrder";
                    request_ac.WorkflowNodeId = "PO-005";
                    request_ac.Note           = "货物到齐全自动完结";
                    request_ac.CreateUserId   = request.CreateUserId;
                    this._workflowActivityService.InsertNewActivity(request_ac);
                }
            }
            return(true);
        }
        public async Task AnnouncePickup(ArrivalNotice details)
        {
            var errorMessage = String.Empty;

            if (Int32.TryParse(details.Car, out var registrationId))
            {
                var students = await _studentDetailsHelper.GetStudentsForCar(registrationId);

                if (students.Any())
                {
                    var announcement = new PickupNotice()
                    {
                        Car           = details.Car,
                        Cone          = details.Cone,
                        Students      = students.ToList(),
                        PickupTimeUTC = DateTimeOffset.UtcNow
                    };
                    await _dbHelper.AddPickupLog(announcement);

                    await Clients.All.SendAsync("PickupAnnouncement", JsonConvert.SerializeObject(announcement));

                    await Clients.Caller.SendAsync("SuccessAnnouncement");
                }
                else
                {
                    errorMessage = $"Failed to locate students attached to Registration Id: {registrationId}.";
                }
            }
            else
            {
                errorMessage = $"Failed to convert {details.Car} to number.";
            }
            if (!string.IsNullOrWhiteSpace(errorMessage))
            {
                await Clients.Caller.SendAsync("FailureAnnouncement", errorMessage);

                _logger.LogError(errorMessage);
            }
        }
 public static ArrivalNoticeView ConvertToArrivalNoticeView(this ArrivalNotice model)
 {
     return(Mapper.Map <ArrivalNotice, ArrivalNoticeView>(model));
 }