private List<JFModel> GetPhoneList(List<CustomerStayModel> listSource) { mJf = new JFModel(); mJf.CatList = listCat; var query = (from p in listSource select p.MainRoomId).Distinct(); foreach (int nMainId in query) { if (nMainId > 0) { var qTeamRoom = listSource.Where(c => c.MainRoomId == nMainId); List<CustomerStayModel> listChangeRomCustomerStay = new List<CustomerStayModel>(); foreach (CustomerStayModel mcs in qTeamRoom) { if (listJf.Where(c => c.PhoneNo == mcs.RoomInfo.RoomPhone).Count() > 0) { continue; } mJf.CommonInfo.StartDate = mcs.CommonInfo.StartDate; if (mcs.ConSumeDetailList.Where(c => c.GoodsInfo.Type == 'R').Count() == 0) { mJf.PhoneNoGroup += cmn.MakeGroup(mcs.RoomInfo.RoomPhone); } else { listChangeRomCustomerStay.Add(mcs); } } if (mJf.PhoneNoGroup != "") { mJf.CommonInfo.EndDate = dtmNow; listJf.AddRange(hml.GetPhoneList(mJf, dtmNow)); } if (cmn.CheckEOF(listChangeRomCustomerStay)) { foreach (CustomerStayModel mcs in listChangeRomCustomerStay) { if (listJf.Where(c => c.PhoneNo == mcs.RoomInfo.RoomPhone).Count() > 0) { continue; } mJf.CommonInfo.StartDate = mcs.CommonInfo.StartDate; mJf.CommonInfo.EndDate = dtmNow; mJf.PhoneNoGroup = cmn.MakeGroup(mcs.RoomInfo.RoomPhone); listJf.AddRange(hml.GetPhoneList(mJf, dtmNow)); } } } else { var qRooms = listSource.Where(c => c.MainRoomId == nMainId); foreach (CustomerStayModel mcs in qRooms) { if (listJf.Where(c => c.PhoneNo == mcs.RoomInfo.RoomPhone).Count() > 0) { continue; } mJf.CommonInfo.StartDate = mcs.CommonInfo.StartDate; mJf.CommonInfo.EndDate = dtmNow; mJf.PhoneNoGroup = cmn.MakeGroup(mcs.RoomInfo.RoomPhone); listJf.AddRange(hml.GetPhoneList(mJf, dtmNow)); } } } return listJf; }
private void BindConsumeDetail(List<CustomerStayModel> listSource) { dgvConsumeDetail.Rows.Clear(); if (cmn.CheckEOF(listSysParameter)) { //double dt = 0.0; dTotal = 0.0; int i = 0; if (IsCountPhone) { listJf = GetPhoneList(listSource); } foreach (CustomerStayModel mCustomerStayTmp in listSource) { dgvConsumeDetail.Rows.Add(); dgvConsumeDetail.Rows[i].Cells["RoomNo"].Value = mCustomerStayTmp.RoomInfo.RoomNo; dgvConsumeDetail.Rows[i].Cells["ConsumeName"].Value = "房间费"; dgvConsumeDetail.Rows[i].Cells["UnitPrice"].Value = mCustomerStayTmp.RoomRate; #region 结账时,统计房间使用时间需按照开房类型以及结账时间来计算. RoomStayType eRst = mCustomerStayTmp.RoomStayType.Equals('D') ? RoomStayType.Day : RoomStayType.Hour; dgvConsumeDetail.Rows[i].Cells["Number"].Value = hml.GetCustomerStayDays(mCustomerStayTmp.CommonInfo.StartDate, dtmNow, dtmNow, eRst, listSysParameter); //单项目时,只计算房价,不计算消费的商品费用. dgvConsumeDetail.Rows[i].Cells["TotalMoney"].Value = hml.GetTotalRates(mCustomerStayTmp, null, listSysParameter, dtmNow, 0.0); dTotal += double.Parse(dgvConsumeDetail.Rows[i].Cells["TotalMoney"].Value.ToString()); #endregion dgvConsumeDetail.Rows[i].Cells["Unit"].Value = eRst == RoomStayType.Day ? "天" : "小时"; dgvConsumeDetail.Rows[i].Cells["ConsumeDate"].Value = mCustomerStayTmp.CommonInfo.CreateDate; dgvConsumeDetail.Rows[i].Cells["CreateUserName"].Value = mCustomerStayTmp.CommonInfo.CreateUserName; #region 商品消费明细 if (cmn.CheckEOF(mCustomerStayTmp.ConSumeDetailList)) { for (int j = 0; j < mCustomerStayTmp.ConSumeDetailList.Count; j++) { dgvConsumeDetail.Rows.Add(); dgvConsumeDetail.Rows[i + 1].Cells["RoomNo"].Value = mCustomerStayTmp.RoomInfo.RoomNo; dgvConsumeDetail.Rows[i + 1].Cells["ConsumeName"].Value = mCustomerStayTmp.ConSumeDetailList[j].GoodsInfo.GoodsName; dgvConsumeDetail.Rows[i + 1].Cells["UnitPrice"].Value = mCustomerStayTmp.ConSumeDetailList[j].UnitPrice; dgvConsumeDetail.Rows[i + 1].Cells["Unit"].Value = mCustomerStayTmp.ConSumeDetailList[j].GoodsInfo.GoodsUnit; dgvConsumeDetail.Rows[i + 1].Cells["Number"].Value = mCustomerStayTmp.ConSumeDetailList[j].Number; dgvConsumeDetail.Rows[i + 1].Cells["TotalMoney"].Value = mCustomerStayTmp.ConSumeDetailList[j].Total; dgvConsumeDetail.Rows[i + 1].Cells["ConsumeDate"].Value = mCustomerStayTmp.ConSumeDetailList[j].CommonInfo.CreateDate.ToString("yyyy-MM-dd HH:mm:ss"); dgvConsumeDetail.Rows[i + 1].Cells["CreateUserName"].Value = mCustomerStayTmp.ConSumeDetailList[j].CommonInfo.CreateUserName; dTotal += mCustomerStayTmp.ConSumeDetailList[j].Total; i++; } } #endregion i++; if (IsCountPhone) { #region 话费明细 var query = listJf.Where(c => c.PhoneNo == mCustomerStayTmp.RoomInfo.RoomPhone); double dPhone = 0.0; if (query.Count() > 0) { dPhone = hml.GetPhoneJF(query.ToList(), listCat); } else { JFModel mEmptyJf = new JFModel(); mEmptyJf.PhoneNo = mCustomerStayTmp.RoomInfo.RoomPhone; listJf.Add(mEmptyJf); } if (dPhone > 0) { dgvConsumeDetail.Rows.Add(); dgvConsumeDetail.Rows[i].Cells["RoomNo"].Value = mCustomerStayTmp.RoomInfo.RoomNo; dgvConsumeDetail.Rows[i].Cells["ConsumeName"].Value = "电话费"; dgvConsumeDetail.Rows[i].Cells["UnitPrice"].Value = ""; dgvConsumeDetail.Rows[i].Cells["TotalMoney"].Value = dPhone; dTotal += dPhone; i++; } #endregion } } } }
/// <summary> /// 获取电话清单 /// </summary> /// <param name="mcs"></param> /// <param name="IsCountJF"></param> private void GetCustomerStayJF(CustomerStayModel mcs,bool IsCountJF) { if (IsCountPhone) { JFModel mJf = new JFModel(); mJf.CommonInfo.StartDate = mcs.CommonInfo.StartDate; mJf.CommonInfo.EndDate = cmn.DateBaseDate; mJf.PhoneNoGroup = cmn.MakeGroup(mcs.RoomInfo.RoomPhone); mJf.CatList = listCat; listJf = hml.GetPhoneList(mJf, mJf.CommonInfo.EndDate); } }
public List<JFModel> GetPhoneList(JFModel mJf, DateTime dtmNow) { ObjectControls oCtrl = new ObjectControls(); oCtrl.Add(MCtrl.ByPhone); oCtrl.Add(MCtrl.ByStartDate); mJf.PhoneNoGroup = Cmn.RemoveLastDou(mJf.PhoneNoGroup); return bPhone.GetPhoneDetail(mJf, oCtrl, dtmNow); }
private double GetPhoneRate(JFModel mJf,List<PhoneCatModel>listCat) { try { if (mJf.FreeId != 0) { var query = listCat.Where(c => c.CatId == mJf.OpCat).FirstOrDefault(); if (query.CatId > 0) { double dMinutes = mJf.CommonInfo.EndDate.Subtract(mJf.CommonInfo.StartDate).TotalMinutes; if (dMinutes - Math.Truncate(dMinutes) > 0) { dMinutes = Math.Truncate(dMinutes) + 1; } return query.CatRate * dMinutes; } } return 0.0; } catch(Exception err) { throw err; } }
public byte[] GetPhoteDetail(byte[] bytJf, byte[] bytCtrl, DateTime dtmNow) { JFModel mJf = (JFModel)cmn.DeserializeObject(bytJf); ObjectControls oCtrl = (ObjectControls)cmn.DeserializeObject(bytCtrl); if (dtmNow < mJf.CommonInfo.StartDate) { return cmn.SerializeObject(new List<JFModel>()); } DateTime dtEndDate = dtmNow <= mJf.CommonInfo.EndDate ? dtmNow : mJf.CommonInfo.EndDate; List<JFModel> listJFModel = new List<JFModel>(); for (DateTime dt = mJf.CommonInfo.StartDate.Date; dt.Date <= dtEndDate.Date; ) { string sql = ""; for (DateTime dtTmp = dt.Date; dtTmp < dt.Date.AddDays(2); ) { string sTableName = "DW" + dtTmp.ToString("yyyyMMdd"); if (dtTmp.Date < dtmNow.Date) { if (CheckTableExist(sTableName)) { if (dtTmp.Date != dt.Date) { sql += " UNION ALL "; } sql += @"SELECT A.OPNO,CONVERT(CHAR(100),DATEADD(SS,A.STARTTIME,'19940101'),20) START_DATE, CONVERT(CHAR(100),DATEADD(SS,A.ENDTIME,'19940101'),20) END_DATE, A.FREEID,A.OPCAT,A.LINKNO,B.JF_TYPE,C.SERCATNAME FROM " + sTableName + @" A,JFJF_ID B,JFSERCATID C WHERE 1=1 AND A.FREEID=B.JF_ID AND A.OPCAT=C.SERCAT "; oCtrl.Helper(oCtrl.Exsit(MCtrl.ByPhone) && oCtrl.Append(ref sql, " AND OPNO IN (" + mJf.PhoneNoGroup + ")")); oCtrl.Helper(oCtrl.Exsit(MCtrl.ByStartDate) && oCtrl.Append(ref sql, " AND CONVERT(CHAR(100),DATEADD(SS,STARTTIME,'19940101'),20) >= " + DBHelper.SQL(mJf.CommonInfo.StartDate) + " AND CONVERT(CHAR(100),DATEADD(SS,ENDTIME,'19940101'),20) <= " + DBHelper.SQL(dtEndDate))); } } else if (dtTmp.Date == dtmNow.Date) { if (!sql.Trim().Equals("")) { sql += " UNION ALL "; } sql += @"SELECT A.OPNO,CONVERT(CHAR(100),DATEADD(SS,A.STARTTIME,'19940101'),20) START_DATE, CONVERT(CHAR(100),DATEADD(SS,A.ENDTIME,'19940101'),20) END_DATE, A.FREEID,A.OPCAT,A.LINKNO,B.JF_TYPE,C.SERCATNAME FROM ZXJHD A,JFJF_ID B,JFSERCATID C WHERE 1=1 AND A.FREEID=B.JF_ID AND A.OPCAT=C.SERCAT "; oCtrl.Helper(oCtrl.Exsit(MCtrl.ByPhone) && oCtrl.Append(ref sql, " AND OPNO IN (" + mJf.PhoneNoGroup + ")")); oCtrl.Helper(oCtrl.Exsit(MCtrl.ByStartDate) && oCtrl.Append(ref sql, " AND CONVERT(CHAR(100),DATEADD(SS,STARTTIME,'19940101'),20) >= " + DBHelper.SQL(mJf.CommonInfo.StartDate) + " AND CONVERT(CHAR(100),DATEADD(SS,ENDTIME,'19940101'),20)<= " + DBHelper.SQL(dtEndDate))); } dtTmp = dtTmp.AddDays(1); } if (string.IsNullOrEmpty(sql)) { dt = dt.Date < dtEndDate.Date.AddDays(-2) ? dt.AddDays(2) : dt.AddDays(1); continue; } sdr = ExecuteReader(sql); using (sdr) { while (sdr.Read()) { JFModel jfmodel = new JFModel(); jfmodel.PhoneNo = dbhelper.ToString(sdr["OPNO"]); jfmodel.CommonInfo.StartDate = dbhelper.ToDateTime(sdr["START_DATE"]); jfmodel.CommonInfo.EndDate = dbhelper.ToDateTime(sdr["END_DATE"]); jfmodel.FreeId = dbhelper.ToInt32(sdr["FREEID"]); jfmodel.FreeDesc = dbhelper.ToString(sdr["JF_TYPE"]); jfmodel.OpCat = dbhelper.ToInt32(sdr["OPCAT"]); jfmodel.OpCatDesc = dbhelper.ToString(sdr["SERCATNAME"]); jfmodel.LinkNo = dbhelper.ToString(sdr["LINKNO"]); listJFModel.Add(jfmodel); } } dt = dt.Date < dtEndDate.Date.AddDays(-2) ? dt.AddDays(2) : dt.AddDays(1); } return cmn.SerializeObject(listJFModel); }
public List<JFModel> GetPhoneDetail(JFModel mJf, ObjectControls oCtrl, DateTime dtmNow) { return (List<JFModel>)Cmn.DeserializeObject(jfs.GetPhoteDetail(Cmn.SerializeObject(mJf), Cmn.SerializeObject(oCtrl), dtmNow)); }