public object QueryYearMonthMonFeeInfo(BillV2 request) { var response = new MonFeeModel(); Mapper.CreateMap <NCIP_NSMONFEE, MonFeeModel>(); var model = unitOfWork.GetRepository <NCIP_NSMONFEE>().dbSet.FirstOrDefault(m => m.NSNO == request.OrgId && m.ISDELETE != true && m.YEARMONTH == request.BillMonth); response = Mapper.Map <MonFeeModel>(model); return(response); }
public async Task<object> CancelMonthData(string yearMonth) { var http = HttpClientHelper.LtcHttpClient; var request = new BillV2(); request.BillMonth = yearMonth; request.OrgId = SecurityHelper.CurrentPrincipal.OrgId ; var monFeeInfo = new MonFeeModel(); try { var result = await http.PostAsJsonAsync("/api/monFee/GetNsMonfee", request); var resultContent = await result.Content.ReadAsStringAsync(); monFeeInfo = JsonConvert.DeserializeObject<MonFeeModel>(resultContent); } catch (Exception ex) { throw ex; } return monFeeInfo; }
public BillV2 GetYearMonthFees(BillV2Info request, BillV2 billv2, bool isHaveNCI) { var keyDateList = GetDiffDateRange(request.STime, request.ETime.AddDays(1).AddSeconds(-1)); //身份证号码 var q = from ipd in unitOfWork.GetRepository <LTC_IPDREG>().dbSet where ipd.FEENO == request.Feeno && ipd.ORGID == SecurityHelper.CurrentPrincipal.OrgId join reg in unitOfWork.GetRepository <LTC_REGFILE>().dbSet on ipd.REGNO equals reg.REGNO into bs from b in bs.DefaultIfEmpty() select new Person { IdNo = b.IDNO, }; var idNo = q.FirstOrDefault().IdNo; #region 年月分段 foreach (var item in keyDateList) { var yearMonth = string.Format("{0}{1}", item.startDate.Year, item.startDate.Month); // 查询额度信息 Mapper.CreateMap <LTC_MONTHLYPAYLIMIT, MonthlyPayLimit>(); var lim = unitOfWork.GetRepository <LTC_MONTHLYPAYLIMIT>().dbSet.Where(m => m.FEENO == request.Feeno && m.ORGID == SecurityHelper.CurrentPrincipal.OrgId && m.YEARMONTH == yearMonth).ToList(); var limitList = Mapper.Map <List <MonthlyPayLimit> >(lim); if (limitList != null && limitList.Count > 0) { #region 额度数据 HasQuotaInfo(request, item, isHaveNCI, billv2, idNo); #endregion } else { #region 无额度数据 NotHasQuotaInfo(request, item, isHaveNCI, billv2, idNo); #endregion } } return(billv2); #endregion }
public BaseResponse <BillV2> SaveBillV2(BillV2 request, string UpdateBy, DateTime UpdateDate) { var newItem = new BillV2() { BillId = request.BillId, BillPayId = request.BillPayId, ReFundRecordId = request.ReFundRecordId, FeeNo = request.FeeNo, NCIItemTotalCost = request.NCIItemTotalCost, SelfPay = request.SelfPay, NCIPayLevel = request.NCIPayLevel, NCIPaysCale = request.NCIPaysCale, NCIPay = request.NCIPay, NCIItemSelfPay = request.NCIItemSelfPay, BalanceStartTime = request.BalanceStartTime, BalanceEndTime = request.BalanceEndTime, HospDay = request.HospDay, Status = 2, BillCreator = request.BillCreator, BalanceOperator = request.BalanceOperator, RefundOperator = request.RefundOperator, CreateBy = request.CreateBy, CreateTime = request.CreateTime, UpdateBy = UpdateBy, UpdateTime = UpdateDate, IsDelete = request.IsDelete, }; if (newItem.BillId != null) { var billInfo = unitOfWork.GetRepository <LTC_BILLV2>().dbSet.Where(m => m.BILLID == newItem.BillId).FirstOrDefault(); if (billInfo != null) { unitOfWork.GetRepository <LTC_BILLV2>().Update(billInfo); unitOfWork.Save(); } } ; return(base.Save <LTC_BILLV2, BillV2>(newItem, (q) => q.BILLID == newItem.BillId)); }
public IHttpActionResult GetNsMonfee(BillV2 request) { var response = service.QueryYearMonthMonFeeInfo(request); return(Ok(response)); }
/// <summary> /// 无额度信息生成账单 /// </summary> /// <param name="billV2">使用记录信息</param> /// <param name="item">时间集合</param> /// <param name="isHaveNCI">是否拥有护理险资格</param> /// <param name="billInfo">账单数据</param> public void NotHasQuotaInfo(BillV2Info billV2, KeyValueForDate item, bool isHaveNCI, BillV2 billInfo, string idNo) { var feeRecordYearMonth = billV2.feeRecordList.Where(m => m.TakeTime >= item.startDate && m.TakeTime <= item.endtDate.AddDays(1).AddSeconds(-1)).ToList(); if (feeRecordYearMonth != null && feeRecordYearMonth.Count > 0) { decimal payedAmount = 0; //累计额度 var selfPay = feeRecordYearMonth.Where(m => m.IsNCIItem == false).Sum(m => m.Cost); //自费项目总费用 var nciItemTotalCost = feeRecordYearMonth.Where(m => m.IsNCIItem == true).Sum(m => m.Cost); // 护理险项目总费用 int hospDay = GetDiffDateDays(item.startDate, item.endtDate); var nciPayLevel = billInfo.NCIPAYLEVEL; var nciPaysCale = billInfo.NCIPAYSCALE; // 是否拥有护理资格 if (isHaveNCI) { #region 护理险资格 #region 账单数据更新 billInfo.SELFPAY += Convert.ToDecimal(selfPay); billInfo.NCIITEMTOTALCOST += Convert.ToDecimal(nciItemTotalCost); billInfo.HOSPDAY += hospDay; var nciPayCost = Convert.ToDecimal(hospDay * Convert.ToDecimal(nciPayLevel) * Convert.ToDecimal(nciPaysCale)); // 护理险最多可报销的费用 if (Convert.ToDecimal(nciItemTotalCost) <= nciPayCost) { billInfo.NCIPAY += Convert.ToDecimal(nciItemTotalCost); payedAmount = Convert.ToDecimal(nciItemTotalCost); billInfo.NCIITEMSELFPAY += Convert.ToDecimal(selfPay); } else { billInfo.NCIPAY += Convert.ToDecimal(nciPayCost); payedAmount = Convert.ToDecimal(nciPayCost); billInfo.NCIITEMSELFPAY += Convert.ToDecimal(selfPay + Convert.ToDecimal(nciItemTotalCost) - nciPayCost); } #endregion #region 保存额度信息表 和 额度历史记录表 和 住民账户表 #region 保存额度信息表 MonthlyPayLimit monthLimit = new MonthlyPayLimit(); monthLimit.YEARMONTH = string.Format("{0}{1}", item.startDate.Year, item.startDate.Month); monthLimit.FEENO = billInfo.FEENO; monthLimit.RESIDENTSSID = idNo; monthLimit.PAYEDAMOUNT = payedAmount; monthLimit.NCIPAYLEVEL = nciPayLevel; monthLimit.NCIPAYSCALE = nciPaysCale; monthLimit.ORGID = SecurityHelper.CurrentPrincipal.OrgId; monthLimit.CREATEBY = SecurityHelper.CurrentPrincipal.UserId.ToString(); monthLimit.CREATETIME = DateTime.Now; int payLimitId = SaveMonthlyPayLimit(monthLimit); #endregion #region 保存额度历史记录表 MonthlyPayBillRecord monthBillRecord = new MonthlyPayBillRecord(); monthBillRecord.BILLID = billInfo.BILLID; monthBillRecord.YEARMONTH = string.Format("{0}{1}", item.startDate.Year, item.startDate.Month); monthBillRecord.FEENO = billInfo.FEENO; monthBillRecord.PAYEDAMOUNT = payedAmount; monthBillRecord.COMPSTARTDATE = item.startDate; monthBillRecord.COMPENDDATE = item.endtDate; monthBillRecord.STATUS = 0; monthBillRecord.CREATEBY = SecurityHelper.CurrentPrincipal.UserId.ToString(); monthBillRecord.CREATETIME = DateTime.Now; monthBillRecord.ISDELETE = false; SaveMonthlyPayBillRecord(monthBillRecord); #endregion #region 更新住民账户信息 var banmodel = unitOfWork.GetRepository <LTC_RESIDENTBALANCE>().dbSet.Where(x => x.FEENO == billInfo.FEENO).FirstOrDefault(); if (banmodel != null) { banmodel.TOTALCOST = banmodel.TOTALCOST == null ? 0 : banmodel.TOTALCOST + selfPay + nciItemTotalCost; banmodel.TOTALNCIPAY = banmodel.TOTALNCIPAY == null ? 0 : banmodel.TOTALNCIPAY + payedAmount; unitOfWork.GetRepository <LTC_RESIDENTBALANCE>().Update(banmodel); unitOfWork.Save(); } #endregion #endregion #endregion } else { #region 无护理险资格 billInfo.SELFPAY += Convert.ToDecimal(selfPay); billInfo.NCIITEMTOTALCOST += Convert.ToDecimal(nciItemTotalCost); billInfo.NCIPAY += 0; billInfo.HOSPDAY += hospDay; billInfo.NCIITEMSELFPAY += Convert.ToDecimal(selfPay + nciItemTotalCost); var banmodel = unitOfWork.GetRepository <LTC_RESIDENTBALANCE>().dbSet.Where(x => x.FEENO == billInfo.FEENO).FirstOrDefault(); if (banmodel != null) { banmodel.TOTALCOST = banmodel.TOTALCOST == null ? 0 : banmodel.TOTALCOST + selfPay + nciItemTotalCost; unitOfWork.GetRepository <LTC_RESIDENTBALANCE>().Update(banmodel); unitOfWork.Save(); } #endregion } } }
public void HasQuotaInfo(BillV2Info billV2, KeyValueForDate item, bool isHaveNCI, BillV2 billInfo, string idNo) { var feeRecordYearMonth = billV2.feeRecordList.Where(m => m.TakeTime >= item.startDate && m.TakeTime <= item.endtDate.AddDays(1).AddSeconds(-1)).ToList(); if (feeRecordYearMonth != null && feeRecordYearMonth.Count > 0) { #region 已有额度信息 var yearMonth = string.Format("{0}{1}", item.startDate.Year, item.startDate.Month); Mapper.CreateMap <LTC_MONTHLYPAYLIMIT, MonthlyPayLimit>(); var limit = unitOfWork.GetRepository <LTC_MONTHLYPAYLIMIT>().dbSet.FirstOrDefault(m => m.FEENO == billInfo.FEENO && m.YEARMONTH == yearMonth); var monthlyRecord = Mapper.Map <MonthlyPayLimit>(limit); #endregion #region 额度历史记录 Mapper.CreateMap <LTC_MONTHLYPAYBILLRECORD, MonthlyPayBillRecord>(); var record = unitOfWork.GetRepository <LTC_MONTHLYPAYBILLRECORD>().dbSet.Where(m => m.FEENO == billInfo.FEENO && m.YEARMONTH == yearMonth); var payLimitList = Mapper.Map <List <MonthlyPayBillRecord> >(record.ToList()); #endregion #region 最新一笔费用信息 decimal payedAmount = 0; //累计额度 var selfPay = feeRecordYearMonth.Where(m => m.IsNCIItem == false).Sum(m => m.Cost); //自费项目总费用 var nciItemTotalCost = feeRecordYearMonth.Where(m => m.IsNCIItem == true).Sum(m => m.Cost); // 护理险项目总费用 var nciPayLevel = billInfo.NCIPAYLEVEL; var nciPaysCale = billInfo.NCIPAYSCALE; var hospDay = GetDiffDateDays(item.startDate, item.endtDate); int maxPayDays = GetRangeHospDay(Convert.ToDateTime(payLimitList.Min(m => m.COMPSTARTDATE)), Convert.ToDateTime(payLimitList.Max(m => m.COMPENDDATE)), item.startDate, item.endtDate); #endregion if (isHaveNCI) { billInfo.SELFPAY += Convert.ToDecimal(selfPay); billInfo.NCIITEMTOTALCOST += Convert.ToDecimal(nciItemTotalCost); billInfo.HOSPDAY += hospDay; var maxNCIPay = Convert.ToDecimal(maxPayDays * Convert.ToDecimal(nciPayLevel) * Convert.ToDecimal(nciPaysCale)); //最大可报销费用 var nciPayedCost = maxNCIPay - monthlyRecord.PAYEDAMOUNT; // 剩余的报销费用 if (Convert.ToDecimal(nciItemTotalCost) <= nciPayedCost) { billInfo.NCIPAY += Convert.ToDecimal(nciItemTotalCost); payedAmount = Convert.ToDecimal(nciItemTotalCost); billInfo.NCIITEMSELFPAY += Convert.ToDecimal(selfPay); } else { billInfo.NCIPAY += Convert.ToDecimal(nciPayedCost); payedAmount = Convert.ToDecimal(nciPayedCost); billInfo.NCIITEMSELFPAY += Convert.ToDecimal(selfPay + Convert.ToDecimal(nciItemTotalCost) - nciPayedCost); } #region 修改额度信息表 Mapper.CreateMap <LTC_MONTHLYPAYLIMIT, MonthlyPayLimit>(); Mapper.CreateMap <MonthlyPayLimit, LTC_MONTHLYPAYLIMIT>(); var recordModel = Mapper.Map <LTC_MONTHLYPAYLIMIT>(monthlyRecord); recordModel.PAYEDAMOUNT += payedAmount; unitOfWork.GetRepository <LTC_MONTHLYPAYLIMIT>().Update(recordModel); unitOfWork.Save(); #endregion #region 保存额度历史记录表 MonthlyPayBillRecord monthBillRecord = new MonthlyPayBillRecord(); monthBillRecord.BILLID = billInfo.BILLID; monthBillRecord.YEARMONTH = string.Format("{0}{1}", item.startDate.Year, item.startDate.Month); monthBillRecord.FEENO = billInfo.FEENO; monthBillRecord.PAYEDAMOUNT = payedAmount; monthBillRecord.COMPSTARTDATE = item.startDate; monthBillRecord.COMPENDDATE = item.endtDate; monthBillRecord.STATUS = 0; monthBillRecord.CREATEBY = SecurityHelper.CurrentPrincipal.UserId.ToString(); monthBillRecord.CREATETIME = DateTime.Now; monthBillRecord.ISDELETE = false; SaveMonthlyPayBillRecord(monthBillRecord); #endregion #region 更新住民账户信息 var banmodel = unitOfWork.GetRepository <LTC_RESIDENTBALANCE>().dbSet.Where(x => x.FEENO == billInfo.FEENO).FirstOrDefault(); if (banmodel != null) { banmodel.TOTALCOST = banmodel.TOTALCOST == null ? 0 : banmodel.TOTALCOST + selfPay + nciItemTotalCost; banmodel.TOTALNCIPAY = banmodel.TOTALNCIPAY == null ? 0 : banmodel.TOTALNCIPAY + payedAmount; unitOfWork.GetRepository <LTC_RESIDENTBALANCE>().Update(banmodel); unitOfWork.Save(); } #endregion } else { #region 无护理险资格 billInfo.SELFPAY += Convert.ToDecimal(selfPay); billInfo.NCIITEMTOTALCOST += Convert.ToDecimal(nciItemTotalCost); billInfo.NCIPAY += 0; billInfo.HOSPDAY += hospDay; billInfo.NCIITEMSELFPAY += Convert.ToDecimal(selfPay + nciItemTotalCost); var banmodel = unitOfWork.GetRepository <LTC_RESIDENTBALANCE>().dbSet.Where(x => x.FEENO == billInfo.FEENO).FirstOrDefault(); if (banmodel != null) { banmodel.TOTALCOST = banmodel.TOTALCOST == null ? 0 : banmodel.TOTALCOST + selfPay + nciItemTotalCost; unitOfWork.GetRepository <LTC_RESIDENTBALANCE>().Update(banmodel); unitOfWork.Save(); } #endregion } } }
/// <summary> /// 保存费用录入信息 /// </summary> /// <param name="request">请求数据</param> /// <returns>返回信息</returns> public BaseResponse <List <FeeRecordBaseInfo> > SaveFeeRecord(BillV2Info request) { BaseResponse <List <FeeRecordBaseInfo> > response = new BaseResponse <List <FeeRecordBaseInfo> >(); if (request.feeRecordList != null && request.feeRecordList.Count > 0) { #region 住民账户信息 Mapper.CreateMap <LTC_RESIDENTBALANCE, ResidentBalance>(); var bal = unitOfWork.GetRepository <LTC_RESIDENTBALANCE>().dbSet.FirstOrDefault(m => m.FEENO == request.Feeno && m.STATUS == 0); var balance = Mapper.Map <ResidentBalance>(bal); bool isHaveNCI = balance.ISHAVENCI == 0 ? true : false; #endregion #region 账单初始化数据 BillV2 billv2 = new BillV2(); billv2.BILLID = String.Format("{0}{1}", SecurityHelper.CurrentPrincipal.OrgId, DateTime.Now.ToString("yyyyMMddHHmmss")); //账单ID billv2.BILLPAYID = null; billv2.REFUNDRECORDID = null; billv2.FEENO = Convert.ToInt32(request.Feeno); billv2.NCIITEMTOTALCOST = 0; billv2.SELFPAY = 0; billv2.NCIPAYLEVEL = balance.NCIPAYLEVEL; billv2.NCIPAYSCALE = balance.NCIPAYSCALE; billv2.NCIPAY = 0; billv2.NCIITEMSELFPAY = 0; billv2.BALANCESTARTTIME = request.STime; billv2.BALANCEENDTIME = request.ETime; billv2.HOSPDAY = 0; billv2.BILLCREATOR = SecurityHelper.CurrentPrincipal.UserId.ToString(); billv2.BALANCEOPERATOR = string.Empty; billv2.REFUNDOPERATOR = string.Empty; billv2.CREATEBY = SecurityHelper.CurrentPrincipal.UserId.ToString(); billv2.CREATETIME = DateTime.Now; billv2.UPDATEBY = string.Empty; billv2.UPDATETIME = null; billv2.ISDELETE = false; #endregion var billv2Info = GetYearMonthFees(request, billv2, isHaveNCI); Mapper.CreateMap <BillV2, LTC_BILLV2>(); var billModel = Mapper.Map <LTC_BILLV2>(billv2Info); unitOfWork.GetRepository <LTC_BILLV2>().Insert(billModel); unitOfWork.Save(); #region 费用记录 foreach (var item in request.feeRecordList) { LTC_FEERECORD model = new LTC_FEERECORD(); model.FEERECORDID = String.Format("{0}{1}{2}{3}", SecurityHelper.CurrentPrincipal.OrgId, DateTime.Now.ToString("yyyyMMddHHmmss"), item.ChargeRecordType, item.ChargeRecordID); model.BILLID = billv2.BILLID; model.CREATEBY = SecurityHelper.CurrentPrincipal.UserId.ToString(); model.CREATETIME = DateTime.Now; model.ISDELETE = false; model.FEENO = item.FeeNo; model.CHARGERECORDTYPE = item.ChargeRecordType; model.CHARGERECORDID = item.ChargeRecordID; model.UNITPRICE = item.UnitPrice; model.COUNT = item.Count; model.COST = Convert.ToDecimal(item.Cost); model.ISNCIITEM = item.IsNCIItem; model.ISREFUNDRECORD = false; unitOfWork.GetRepository <LTC_FEERECORD>().Insert(model); } unitOfWork.Save(); response.ResultCode = 1001; response.ResultMessage = "生成账单成功,请到费用查询中进行查看!"; #endregion } else { response.ResultCode = -1; response.ResultMessage = "未查询到有效的使用记录数据!"; } return(response); }