using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace BLL { public class ExpenseDetailService { public static decimal? GetSumCostMoneyByExpenseId(string expenseId) { return (from x in Funs.DB.CostGoods_ExpenseDetail where x.ExpenseId == expenseId select x.CostMoney).Sum(); } public static List GetExpenseDetailsByExpenseId(string expenseId) { return (from x in Funs.DB.CostGoods_ExpenseDetail where x.ExpenseId == expenseId select x).ToList(); } public static decimal GetSumCostMoneyByExpenseIdAndType(string expenseId, string costType) { Model.CostGoods_ExpenseDetail detail = (from x in Funs.DB.CostGoods_ExpenseDetail where x.ExpenseId == expenseId && x.CostType == costType select x).FirstOrDefault(); if (detail != null) { return detail.CostMoney ?? 0; } else { return 0; } } /// /// 根据单位和时间获取费用明细集合 /// /// /// /// /// public static List GetCostDetailsByUnitId(string unitId, DateTime startTime, DateTime endTime) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { return (from x in db.CostGoods_ExpenseDetail join y in db.CostGoods_Expense on x.ExpenseId equals y.ExpenseId where y.UnitId == unitId && y.States == BLL.Const.State_2 && y.ApproveDate >= startTime && y.ApproveDate < endTime select x).Distinct().ToList(); } } /// /// 根据单位和时间及费用类型获取当期费用 /// /// /// /// /// /// public static decimal GetCostDetailsByUnitIdAndCostType(string unitId, DateTime startTime, DateTime endTime, string costType) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { decimal cost = 0; var q = from x in db.CostGoods_ExpenseDetail join y in db.CostGoods_Expense on x.ExpenseId equals y.ExpenseId join z in db.Sys_FlowOperate on y.ExpenseId equals z.DataId where y.UnitId == unitId && y.States == BLL.Const.State_2 && z.State == BLL.Const.State_2 && z.OperaterTime >= startTime && z.OperaterTime < endTime && x.CostType.Contains(costType) select x.CostMoney; foreach (var item in q) { if (item != null) { cost += Funs.GetNewDecimalOrZero(item.ToString()); } } return cost; //return (from x in Funs.DB.CostGoods_ExpenseDetail // join y in Funs.DB.CostGoods_Expense on x.ExpenseId equals y.ExpenseId // where y.UnitId == unitId && y.States == BLL.Const.State_2 && y.ApproveDate >= startTime && y.ApproveDate < endTime && x.CostType.Contains(costType) // select x.CostMoney ?? 0).Sum(); } } /// /// 增加费用明细信息 /// /// 费用明细实体 public static void AddCostDetail(string expenseId, string costType, decimal costMoney, string costDef) { Model.SGGLDB db = Funs.DB; Model.CostGoods_ExpenseDetail newExpenseDetail = new Model.CostGoods_ExpenseDetail { ExpenseDetailId = SQLHelper.GetNewID(typeof(Model.CostGoods_ExpenseDetail)), ExpenseId = expenseId, CostType = costType, CostMoney = costMoney, CostDef = costDef }; db.CostGoods_ExpenseDetail.InsertOnSubmit(newExpenseDetail); db.SubmitChanges(); } /// /// 根据费用编号和费用类型获取费用明细信息 /// /// /// /// public static Model.CostGoods_ExpenseDetail GetCostDetailByExpenseIdAndCostType(string expenseId, string costType) { return Funs.DB.CostGoods_ExpenseDetail.FirstOrDefault(e => (e.ExpenseId == expenseId && e.CostType == costType)); } /// /// 根据费用编号删除对应的费用明细信息 /// /// 编号 public static void DeleteCostDetailByExpenseId(string expenseId) { Model.SGGLDB db = Funs.DB; var q = (from x in db.CostGoods_ExpenseDetail where x.ExpenseId == expenseId select x).ToList(); db.CostGoods_ExpenseDetail.DeleteAllOnSubmit(q); db.SubmitChanges(); } } }