Ejemplo n.º 1
0
 public IActionResult GetChargedListByCustomerId(int customerId, string timeRange = "Today", int?pageIndex = 1, int?pageSize = 20)
 {
     try
     {
         var dtt = timeRange.ahDtUtil().TimeRange();
         var md  = _chargeSvr.GetChargeListPayedModelByCustomerId(customerId, dtt.Item1, dtt.Item2, pageIndex.Value, pageSize.Value)
                   .Select(m => new Models.ViewModel.PayedItem
         {
             CustomerId      = m.CustomerId.Value,
             CustomerName    = m.CustomerName,
             Gender          = m.Gender,
             TreatId         = m.TreatId,
             FeeTypeCode     = m.FeeTypeCode,
             FeeTypeCodeName = FeeTypes.ToName(m.FeeTypeCode),
             PayedTime       = m.PayedTime,
             PayId           = m.PayId,
             PayOrderId      = m.PayOrderId,
             TotalAmount     = m.TotalAmount,
             PayRemark       = m.PayRemark,
             TreatTime       = m.TreatTime
         });
         var rlt = MyDynamicResult(md);
         return(Ok(rlt));
     }
     catch (Exception ex) { return(Ok(MyDynamicResult(ex))); }
 }
Ejemplo n.º 2
0
        //更新到收款表
        private async Task <bool> UpdatePayAsync(CHIS_Charge_PayPre payPre, int opId, string opMan)
        {
            if (payPre.PayStatus == 0)
            {
                throw new Exception("该笔支付订单没有支付成功,请确认。");
            }
            var db = _db;

            db.BeginTransaction();
            try
            {
                var formed = db.CHIS_Charge_PayPre_Detail_Formed.AsNoTracking().Where(m => m.PayPreID == payPre.Id).ToList();   //成药
                var herb   = db.CHIS_Charge_PayPre_Detail_Herb.AsNoTracking().Where(m => m.PayPreID == payPre.Id).ToList();     //中药
                var extras = db.CHIS_Charge_PayPre_Detail_ExtraFee.AsNoTracking().Where(m => m.PayPreId == payPre.Id).ToList(); //附加费

                var find = db.CHIS_Charge_Pay.AsNoTracking().Where(m => m.PayOrderId == payPre.PayOrderId);
                if (find.Count() > 0)
                {
                    throw new PayException(PayExceptionType.PayedFinishAndSuccess, "该支付订单已经存在,已经支付,无需重复。");
                }
                //添加主表
                #region 添加主表

                var debuglog = _env.IsDevelopment() ? "[测试]" : "";

                var pay = (await db.CHIS_Charge_Pay.AddAsync(new CHIS_Charge_Pay
                {
                    TotalAmount = payPre.TotalAmount,
                    TreatId = payPre.treatId,
                    FeeTypeCode = payPre.FeeTypeCode,
                    PayedTime = payPre.PayedSuccessTime ?? DateTime.Now,
                    PayOrderId = payPre.PayOrderId,
                    StationId = payPre.StationId,
                    PayRemark = payPre.PayRemark + debuglog,
                    sysOpId = opId,
                    sysOpMan = opMan,
                    sysOpTime = DateTime.Now
                })).Entity;
                await db.SaveChangesAsync();

                #endregion


                //添加从表
                #region 添加一般从表
                //------------- 成药 ------------------------------
                foreach (var mm in formed)
                {
                    await db.CHIS_Charge_Pay_Detail_Formed.AddAsync(new CHIS_Charge_Pay_Detail_Formed
                    {
                        Amount         = mm.Amount,
                        PrescriptionNo = mm.PrescriptionNo,
                        TreatId        = mm.TreatId,
                        UnitId         = mm.UnitID,
                        Quantity       = mm.Quantity,
                        Price          = mm.Price,
                        PayId          = pay.PayId,
                        DoctorAdviceId = mm.DoctorAdviceId
                    });

                    //更新医嘱缴费状态
                    var ma = db.CHIS_DoctorAdvice_Formed.FirstOrDefault(m => m.PrescriptionNo == mm.PrescriptionNo);
                    if (ma == null)
                    {
                        throw new Exception("没有发现医嘱信息");
                    }
                    ma.ChargeStatus = (short)ChargeStatus.Payed;//设置为已经缴费
                }

                // ------------ 中药 -------------------------------
                foreach (var mm in herb)
                {
                    await db.CHIS_Charge_Pay_Detail_Herb.AddAsync(new CHIS_Charge_Pay_Detail_Herb
                    {
                        Amount         = mm.Amount,
                        PrescriptionNo = mm.PrescriptionNo,
                        TreatId        = mm.TreatId,
                        UnitID         = mm.UnitID,
                        Quantity       = mm.Quantity,
                        Price          = mm.Price,
                        PayId          = pay.PayId,
                        PayOrderId     = pay.PayOrderId,
                        DoctorAdviceId = mm.DoctorAdviceId
                    });

                    //更新医嘱缴费状态
                    var ma = db.CHIS_DoctorAdvice_Herbs.FirstOrDefault(m => m.PrescriptionNo == mm.PrescriptionNo);
                    if (ma == null)
                    {
                        throw new Exception("没有发现医嘱信息");
                    }
                    ma.ChargeStatus = (short)ChargeStatus.Payed;//设置为已经缴费
                }

                #endregion

                #region 添加附加费从表
                foreach (var mm in extras)
                {
                    await db.CHIS_Charge_Pay_Detail_ExtraFee.AddAsync(new CHIS_Charge_Pay_Detail_ExtraFee
                    {
                        DoctorExtraFeeId = mm.DoctorExtraFeeId,
                        ExtraFeeAmount   = mm.ExtraFeeAmount,
                        ExtraFeeTypeId   = mm.ExtraFeeTypeId,
                        PayId            = pay.PayId
                    });
                }
                await db.SaveChangesAsync();

                #endregion

                var treat = _treatSvr.FindTreat(pay.TreatId);
                treat.NeedPayAmount = 0;
                await db.SaveChangesAsync();

                db.CommitTran();

                //操作成功则赠送积分信息
                if (payPre.FeeTypeCode == FeeTypes.AliPay_QR ||
                    payPre.FeeTypeCode == FeeTypes.WeChat_H5 ||
                    payPre.FeeTypeCode == FeeTypes.WeChat_Pub ||
                    payPre.FeeTypeCode == FeeTypes.WeChat_QR)
                {
                    _pointsService.ChangePoints(new Models.InputModel.PointsDetailInputModel
                    {
                        CustomerId  = treat.CustomerId,
                        Description = FeeTypes.ToName(payPre.FeeTypeCode) + $"支付赠送(消费{pay.TotalAmount})",
                        Points      = (int)(payPre.TotalAmount * 100)
                    });
                }

                _logger.WriteSUCCESS($"订单支付更新数据成功:{payPre.PayOrderId}", opId, opMan);
            }
            catch (Exception ex)
            {
                db.RollbackTran();
                _logger.WriteError(ex, opId, opMan);
                throw ex;
            }
            return(true);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 已经支付了
        /// </summary>
        /// <param name="dt0"></param>
        /// <param name="dt1"></param>
        /// <param name="stationId"></param>
        /// <param name="doctorId"></param>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        public Ass.Mvc.PageListInfo <PayedItem> GetChargeListPayedModel(string searchText, bool bAllClinic, DateTime dt0, DateTime dt1, int stationId, int?doctorId = null, int?registOpId = null, int pageIndex = 1, int pageSize = 20)
        {
            var f = _db.vwCHIS_Charge_Pay.AsNoTracking().Join(
                _db.vwCHIS_DoctorTreat, a => a.TreatId, g => g.TreatId, (a, g) => new
            {
                a.DoctorId,
                a.StationId,
                a.TreatTime,
                g.RegistOpId,
                a.CustomerId,
                a.CustomerName,
                a.CustomerMobile,
                a.Gender,
                a.PayedTime,
                a.PayOrderId,
                a.PayId,
                a.TotalAmount,
                a.TreatId,
                a.FeeTypeCode,
                a.PayRemark
            });

            f = f.Where(m => m.StationId == stationId && m.TreatTime >= dt0 && m.TreatTime < dt1);

            if (registOpId.HasValue)
            {
                f = f.Where(m => m.RegistOpId == registOpId);
            }
            else if (doctorId > 0 && !bAllClinic)
            {
                f = f.Where(m => m.DoctorId == doctorId);
            }

            if (searchText.IsNotEmpty())
            {
                var tp = searchText.GetStringType();
                if (tp.IsMobile)
                {
                    f = f.Where(m => m.CustomerMobile == tp.String);
                }
                else
                {
                    f = f.Where(m => m.CustomerName.Contains(searchText));
                }
            }
            var find = f.Select(m => new PayedItem
            {
                CustomerId      = m.CustomerId.Value,
                CustomerName    = m.CustomerName,
                Gender          = m.Gender,
                TreatTime       = m.TreatTime,
                TreatId         = m.TreatId,
                PayedTime       = m.PayedTime,
                PayOrderId      = m.PayOrderId,
                PayId           = m.PayId,
                TotalAmount     = m.TotalAmount,
                PayRemark       = m.PayRemark,
                FeeTypeCode     = m.FeeTypeCode,
                FeeTypeCodeName = FeeTypes.ToName(m.FeeTypeCode)
            });

            var total = find.Count();
            var list  = find.OrderByDescending(m => m.PayedTime).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
            //获取图片
            var pics = _cusSvr.GetCustomersImage(list.Select(m => m.CustomerId).ToList());

            foreach (var item in list)
            {
                item.CustomerPic = pics.FirstOrDefault(m => m.CustomerId == item.CustomerId)?.PicUrl;
            }

            return(new Ass.Mvc.PageListInfo <PayedItem>()
            {
                PageSize = pageSize,
                RecordTotal = total,
                PageIndex = pageIndex,
                DataList = list
            });
        }