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))); } }
//更新到收款表 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); }
/// <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 }); }