Ejemplo n.º 1
0
        /// <summary>
        /// 创建一张交接单
        /// </summary>
        public async Task <HandOverBillOutput> CreateHandOverBill()
        {
            var currentUser = await this.GetCurrentUserAsync();

            var currentDepartment = await this.GetCurrentUserOrganizationUnitAsync();

            HandOverBill handOverBill = await this._handOverBillFactory.CreateHandOverBill(currentUser, currentDepartment);

            await this._handOverBillRepository.InsertAndGetIdAsync(handOverBill);

            return(handOverBill.MapTo <HandOverBillOutput>());
        }
Ejemplo n.º 2
0
        //检查并交接单是否完成
        private async Task <bool> checkBillCompleted(HandOverBill bill)
        {
            var allCompleted = bill.BillLines.All(l => l.LineState != HandOverBillLineState.Pending);

            if (allCompleted)
            {
                bill.BillState = HandOverBillState.Completed;
                await this._handOverBillRepository.UpdateAsync(bill);

                return(true);
            }
            return(false);
        }
        /// <summary>
        /// 创建交接单
        /// </summary>
        /// <param name="creator">创建人</param>
        /// <param name="sourceDepartment">转出部门</param>
        /// <returns>交接单</returns>
        public async Task <HandOverBill> CreateHandOverBill(SysUser creator, OrganizationUnit sourceDepartment)
        {
            if (creator == null)
            {
                throw new ArgumentNullException("creator");
            }
            if (sourceDepartment == null)
            {
                throw new ArgumentNullException("sourceDepartment");
            }

            //创建交接单号
            string billCodePrefix       = DateTime.Today.ToString("yyyyMM");
            string billCodeSerialNumber = (await this._handOverBillRepository.GetAll()
                                           .Where(b => b.BillCodePrefix == billCodePrefix)
                                           .MaxAsync(b => b.BillCodeSerialNumber));

            billCodeSerialNumber = !string.IsNullOrWhiteSpace(billCodeSerialNumber) ? (int.Parse(billCodeSerialNumber) + 1).ToString("D3") : "001";

            //转出部门
            var transferSource = HandOverDepartment.CreateFromOrganizationUnit(sourceDepartment);

            HandOverBill billBean = new HandOverBill
            {
                BillCodePrefix           = billCodePrefix,
                BillCodeSerialNumber     = billCodeSerialNumber,
                TransferSource           = transferSource,
                TransferTargetType       = HandOverTargetType.Department,
                TransferTargetDepartment = new HandOverDepartment(),
                TransferTargetSupplier   = new HandOverSupplier(),
                Remark          = "",
                CreatorUserName = creator.Surname,
                BillState       = HandOverBillState.Draft
            };

            return(billBean);
        }