public BaseResponse <List <BillV2> > SaveBillV2Info(BillV2List request) { BaseResponse <List <BillV2> > response = new BaseResponse <List <BillV2> >(); if (request.BillV2Lists != null && request.BillV2Lists.Count > 0) { #region 退款 foreach (var item in request.BillV2Lists) { //费用记录 var fc = unitOfWork.GetRepository <LTC_FEERECORD>().dbSet.Where(m => m.FEENO == item.FeeNo && m.ISDELETE == false && m.BILLID == item.BillId).ToList(); if (fc != null) { foreach (var itemfc in fc) { LTC_FEERECORD feemodel = new LTC_FEERECORD(); itemfc.ISREFUNDRECORD = true; itemfc.UPDATEBY = SecurityHelper.CurrentPrincipal.EmpNo; itemfc.UPDATETIME = DateTime.Now; unitOfWork.GetRepository <LTC_FEERECORD>().Update(itemfc); //创建一条负数据 feemodel.FEERECORDID = String.Format("{0}{1}{2}{3}", SecurityHelper.CurrentPrincipal.OrgId, DateTime.Now.ToString("yyyyMMddHHmmss"), itemfc.CHARGERECORDTYPE, itemfc.CHARGERECORDID); feemodel.BILLID = itemfc.BILLID; feemodel.CREATEBY = SecurityHelper.CurrentPrincipal.EmpNo; feemodel.CREATETIME = DateTime.Now; feemodel.ISDELETE = false; feemodel.FEENO = item.FeeNo; feemodel.CHARGERECORDTYPE = itemfc.CHARGERECORDTYPE; feemodel.CHARGERECORDID = itemfc.CHARGERECORDID; feemodel.UNITPRICE = itemfc.UNITPRICE; feemodel.COUNT = -itemfc.COUNT; feemodel.COST = -itemfc.COST; feemodel.ISNCIITEM = itemfc.ISNCIITEM; feemodel.ISREFUNDRECORD = false; unitOfWork.GetRepository <LTC_FEERECORD>().Insert(feemodel); } } //账单记录 LTC_BILLV2 model = new LTC_BILLV2(); model.BILLID = item.BillId; model.BILLPAYID = item.BillPayId; model.BILLMONTH = item.BillMonth; model.REFUNDRECORDID = item.ReFundRecordId; model.FEENO = item.FeeNo; model.NCIITEMTOTALCOST = item.NCIItemTotalCost; model.SELFPAY = item.SelfPay; model.NCIPAYLEVEL = item.NCIPayLevel; model.NCIPAYSCALE = item.NCIPaysCale; model.NCIPAY = item.NCIPay; model.NCIITEMSELFPAY = item.NCIItemSelfPay; model.BALANCESTARTTIME = item.BalanceStartTime; model.BALANCEENDTIME = item.BalanceEndTime; model.HOSPDAY = item.HospDay; model.STATUS = item.Status; model.BILLCREATOR = item.BillCreator; model.BALANCEOPERATOR = item.BalanceOperator; model.REFUNDOPERATOR = SecurityHelper.CurrentPrincipal.EmpNo; model.CREATEBY = item.CreateBy; model.CREATETIME = item.CreateTime; model.UPDATEBY = SecurityHelper.CurrentPrincipal.EmpNo; model.UPDATETIME = DateTime.Now; model.ISDELETE = item.IsDelete; model.ORGID = SecurityHelper.CurrentPrincipal.OrgId; unitOfWork.GetRepository <LTC_BILLV2>().Update(model); //使用记录 var feeRecs = unitOfWork.GetRepository <LTC_FEERECORD>().dbSet.Where(m => m.BILLID == item.BillId).ToList(); if (feeRecs != null) { foreach (var feeRec in feeRecs) { if (feeRec.CHARGERECORDTYPE == Convert.ToInt32(ChargeItemType.Drug)) { var drug = unitOfWork.GetRepository <LTC_DRUGRECORD>().dbSet.FirstOrDefault(m => m.DRUGRECORDID == feeRec.CHARGERECORDID); drug.STATUS = Convert.ToInt32(RecordStatus.Refund); drug.UPDATEBY = SecurityHelper.CurrentPrincipal.EmpNo; drug.UPDATETIME = DateTime.Now; unitOfWork.GetRepository <LTC_DRUGRECORD>().Update(drug); } else if (feeRec.CHARGERECORDTYPE == Convert.ToInt32(ChargeItemType.Material)) { var material = unitOfWork.GetRepository <LTC_MATERIALRECORD>().dbSet.FirstOrDefault(m => m.MATERIALRECORDID == feeRec.CHARGERECORDID); material.STATUS = Convert.ToInt32(RecordStatus.Refund); material.UPDATEBY = SecurityHelper.CurrentPrincipal.EmpNo; material.UPDATETIME = DateTime.Now; unitOfWork.GetRepository <LTC_MATERIALRECORD>().Update(material); } else if (feeRec.CHARGERECORDTYPE == Convert.ToInt32(ChargeItemType.Service)) { var service = unitOfWork.GetRepository <LTC_SERVICERECORD>().dbSet.FirstOrDefault(m => m.SERVICERECORDID == feeRec.CHARGERECORDID); service.STATUS = Convert.ToInt32(RecordStatus.Refund); service.UPDATEBY = SecurityHelper.CurrentPrincipal.EmpNo; service.UPDATETIME = DateTime.Now; unitOfWork.GetRepository <LTC_SERVICERECORD>().Update(service); } } } //额度 var mpbr = unitOfWork.GetRepository <LTC_MONTHLYPAYBILLRECORD>().dbSet.Where(m => m.FEENO == item.FeeNo && m.ISDELETE == false && m.BILLID == item.BillId).ToList(); if (mpbr != null) { foreach (var itemmpbr in mpbr) { itemmpbr.STATUS = Convert.ToInt32(BillStatus.Refund); itemmpbr.UPDATEBY = SecurityHelper.CurrentPrincipal.EmpNo; itemmpbr.UPDATETIME = DateTime.Now; unitOfWork.GetRepository <LTC_MONTHLYPAYBILLRECORD>().Update(itemmpbr); var mpl = unitOfWork.GetRepository <LTC_MONTHLYPAYLIMIT>().dbSet.FirstOrDefault(m => m.FEENO == item.FeeNo && m.YEARMONTH == itemmpbr.YEARMONTH && m.ORGID == SecurityHelper.CurrentPrincipal.OrgId); if (mpl != null) { mpl.PAYEDAMOUNT = mpl.PAYEDAMOUNT - itemmpbr.PAYEDAMOUNT; mpl.UPDATEBY = SecurityHelper.CurrentPrincipal.EmpNo; mpl.UPDATETIME = DateTime.Now; unitOfWork.GetRepository <LTC_MONTHLYPAYLIMIT>().Update(mpl); } } } //请假记录数据 var ncideduModel = unitOfWork.GetRepository <LTC_NCIDEDUCTION>().dbSet.Where(m => m.BILLID == item.BillId).ToList(); Mapper.CreateMap <LTC_NCIDEDUCTION, NCIDeductionModel>(); var edductionList = Mapper.Map <List <NCIDeductionModel> >(ncideduModel); if (edductionList != null && edductionList.Count > 0) { foreach (var deduitem in edductionList) { var dedu = unitOfWork.GetRepository <LTC_NCIDEDUCTION>().dbSet.FirstOrDefault(m => m.ID == deduitem.ID); dedu.BILLID = null; dedu.AMOUNT = 0; dedu.DEDUCTIONREASON = ""; dedu.DEDUCTIONSTATUS = (int)DeductionStatus.UnCharge; dedu.UPDATEBY = SecurityHelper.CurrentPrincipal.EmpNo; dedu.UPDATETIME = DateTime.Now; unitOfWork.GetRepository <LTC_NCIDEDUCTION>().Update(dedu); } } } unitOfWork.Save(); response.ResultCode = 1001; #endregion } else { response.ResultCode = -1; response.ResultMessage = "未查询到有效的账单数据!"; } return(response); }
/// <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); }