using Microsoft.SqlServer.Dts.Runtime; using Model; using NPOI.SS.UserModel; using System; using System.Collections.Generic; using System.Linq; namespace BLL { /// /// 安全费用管理 /// public static class CostManageService { public static Model.SGGLDB db = Funs.DB; /// /// 根据主键获取安全费用管理 /// /// /// public static Model.CostGoods_CostManage GetCostManageById(string costManageId) { return Funs.DB.CostGoods_CostManage.FirstOrDefault(e => e.CostManageId == costManageId); } /// /// 获取 已支付的HSE费用 /// /// /// /// public static decimal GetSumHSECost(string ProjectId, string UnitId, string costManageId ) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { decimal sumCost = 0; var getData = from x in db.CostGoods_CostManage where x.ProjectId == ProjectId && x.UnitId == UnitId && x.States == Const.State_2 && x.CostManageId != costManageId select x; if (getData.Count() > 0) { sumCost = getData.Sum(x => x.SumMoney ?? 0); } return sumCost; } } /// /// 添加安全费用管理 /// /// public static void AddCostManage(Model.CostGoods_CostManage costManage) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { Model.CostGoods_CostManage newCostManage = new Model.CostGoods_CostManage { CostManageId = costManage.CostManageId, ProjectId = costManage.ProjectId, CostManageCode = costManage.CostManageCode, CostManageName = costManage.CostManageName, UnitId = costManage.UnitId, ContractNum = costManage.ContractNum, CostManageDate = costManage.CostManageDate, Opinion = costManage.Opinion, SubCN = costManage.SubCN, SubHSE = costManage.SubHSE, SubProject = costManage.SubProject, States = costManage.States, CompileMan = costManage.CompileMan, CompileDate = costManage.CompileDate, NextManId= costManage.NextManId, }; db.CostGoods_CostManage.InsertOnSubmit(newCostManage); db.SubmitChanges(); AddCostManageFlowOperate(newCostManage); } CodeRecordsService.InsertCodeRecordsByMenuIdProjectIdUnitId(Const.ProjectCostManageMenuId, costManage.ProjectId, null, costManage.CostManageId, costManage.CompileDate); } /// /// 修改费用管理 /// /// public static void UpdateCostManage(Model.CostGoods_CostManage costManage) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { Model.CostGoods_CostManage newCostManage = db.CostGoods_CostManage.FirstOrDefault(e => e.CostManageId == costManage.CostManageId); if (newCostManage != null) { //newCostManage.ProjectId = costManage.ProjectId; newCostManage.CostManageName = costManage.CostManageName; newCostManage.UnitId = costManage.UnitId; newCostManage.ContractNum = costManage.ContractNum; newCostManage.CostManageDate = costManage.CostManageDate; newCostManage.Opinion = costManage.Opinion; newCostManage.SubCN = costManage.SubCN; newCostManage.SubHSE = costManage.SubHSE; newCostManage.SubProject = costManage.SubProject; newCostManage.States = costManage.States; newCostManage.CompileMan = costManage.CompileMan; newCostManage.CompileDate = costManage.CompileDate; newCostManage.NextManId = costManage.NextManId; db.SubmitChanges(); } } } /// /// 根据主键删除费用管理 /// /// public static void DeleteCostManageById(string costManageId) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var costManage = db.CostGoods_CostManage.FirstOrDefault(e => e.CostManageId == costManageId); if (costManage != null) { deleteCostManageFlowOperate(costManageId); CommonService.DeleteAttachFileById(costManageId);//删除附件 db.CostGoods_CostManage.DeleteOnSubmit(costManage); db.SubmitChanges(); } } } /// /// 按照明细取当前单据总费用 /// /// public static void UpdateSumMoney(string costManageId) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var costManage = db.CostGoods_CostManage.FirstOrDefault(e => e.CostManageId == costManageId); if (costManage != null) { decimal sumC = 0; var getItems = db.CostGoods_CostManageItem.Where(x => x.CostManageId == costManageId); if (getItems.Count() > 0) { sumC = getItems.Sum(x => x.PriceMoney ?? 0); } costManage.SumMoney = sumC; db.SubmitChanges(); } } } /// /// 根据主表ID获取审核列表 /// /// /// public static List getCostManageFlowOperateList(string costManageId) { return (from x in Funs.DB.CostGoods_CostManageFlowOperate where x.CostManageId == costManageId orderby x.SortIndex select x).ToList(); } /// /// 获取当前步骤审核人 /// /// /// public static Model.CostGoods_CostManageFlowOperate getNowCostManageFlowOperateList(string costManageId) { var getAllNoClose = Funs.DB.CostGoods_CostManageFlowOperate.Where(x => x.CostManageId == costManageId && (x.IsClosed == null || x.IsClosed == false)); if (getAllNoClose.Count() > 0) { var minSortIndex = getAllNoClose.Min(x => x.SortIndex) ?? 0; return getAllNoClose.FirstOrDefault(x => x.SortIndex == minSortIndex); } else { return null; } } /// /// 获取下一步审核人 /// /// /// public static Model.CostGoods_CostManageFlowOperate getNextCostManageFlowOperateList(string costManageId,string operaterId) { int minSortIndex = 1; var getAllNoClose = Funs.DB.CostGoods_CostManageFlowOperate.Where(x => x.CostManageId == costManageId && (x.IsClosed == null || x.IsClosed == false)); if (getAllNoClose.Count() > 0) { var getFlowOperate = getAllNoClose.Where(x => x.OperaterId == operaterId); if (getFlowOperate.Count() > 0) { minSortIndex = (getFlowOperate.Min(x => x.SortIndex) ?? 0) + 1; } else { minSortIndex = getAllNoClose.Min(x => x.SortIndex) ?? 1; } return getAllNoClose.FirstOrDefault(x => x.SortIndex == minSortIndex); } else { return null; } } /// /// 根据新增费用申请表 自动生成审核流程表 /// public static void AddCostManageFlowOperate(Model.CostGoods_CostManage costManage) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { List flowList = new List(); /// 施工单位 if (ProjectUnitService.GetProjectUnitTypeByProjectIdUnitId(costManage.ProjectId, costManage.UnitId)) { string cUnitId = Const.UnitId_SEDIN; var getUnit = db.Project_ProjectUnit.FirstOrDefault(x => x.ProjectId == costManage.ProjectId && x.UnitType == Const.ProjectUnitType_1); if (getUnit != null && !string.IsNullOrEmpty(getUnit.UnitId)) { cUnitId = getUnit.UnitId; } //// 分包单位项目经理审批、总包单位HSE经理审核、总包单位项目控制经理审核、总包单位项目经理审批 var Flow1 = new CostGoods_CostManageFlowOperate() { FlowOperateId = SQLHelper.GetNewID(), CostManageId = costManage.CostManageId, AuditFlowName = "分包单位项目经理审批", SortIndex = 1, UnitId = costManage.UnitId, IsClosed = false, }; flowList.Add(Flow1); var Flow2 = new CostGoods_CostManageFlowOperate() { FlowOperateId = SQLHelper.GetNewID(), CostManageId = costManage.CostManageId, AuditFlowName = "总包单位HSE经理审核", SortIndex = 2, UnitId = cUnitId, IsClosed = false, }; flowList.Add(Flow2); var Flow3 = new CostGoods_CostManageFlowOperate() { FlowOperateId = SQLHelper.GetNewID(), CostManageId = costManage.CostManageId, AuditFlowName = "总包单位项目控制经理审核", SortIndex = 3, UnitId = cUnitId, IsClosed = false, }; flowList.Add(Flow3); var Flow4 = new CostGoods_CostManageFlowOperate() { FlowOperateId = SQLHelper.GetNewID(), CostManageId = costManage.CostManageId, AuditFlowName = "总包单位项目经理审批", SortIndex = 4, UnitId = cUnitId, IsClosed = false, }; flowList.Add(Flow4); } else ///非施工单位 { ////安全工程师发起、安全经理审核、项目经理批准 var Flow1 = new CostGoods_CostManageFlowOperate() { FlowOperateId = SQLHelper.GetNewID(), CostManageId = costManage.CostManageId, AuditFlowName = "安全经理审核", SortIndex = 1, UnitId = costManage.UnitId, IsClosed = false, }; flowList.Add(Flow1); var Flow2 = new CostGoods_CostManageFlowOperate() { FlowOperateId = SQLHelper.GetNewID(), CostManageId = costManage.CostManageId, AuditFlowName = "项目经理批准", SortIndex = 2, UnitId = costManage.UnitId, IsClosed = false, }; flowList.Add(Flow2); } if (flowList.Count() > 0) { db.CostGoods_CostManageFlowOperate.InsertAllOnSubmit(flowList); db.SubmitChanges(); } } } /// /// 审核意见更新 /// /// public static void updateCostManageFlowOperate(Model.CostGoods_CostManageFlowOperate flow) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var getData = db.CostGoods_CostManageFlowOperate.FirstOrDefault(x => x.FlowOperateId == flow.FlowOperateId); if (getData != null) { getData.OperaterId = flow.OperaterId; getData.OperaterTime = flow.OperaterTime; getData.IsAgree = flow.IsAgree; getData.Opinion = flow.Opinion; getData.IsClosed = flow.IsClosed; db.SubmitChanges(); } } } /// /// 所以关闭步骤 打开 /// /// public static void updateOpenCostManageFlowOperate(string costManageId) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var getDatas = db.CostGoods_CostManageFlowOperate.Where(x => x.CostManageId == costManageId && x.IsClosed==true); foreach ( var item in getDatas) { item.IsClosed= false; db.SubmitChanges(); } } } /// /// /// /// public static void deleteCostManageFlowOperate(string costManageId) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var getData = db.CostGoods_CostManageFlowOperate.Where(x => x.CostManageId == costManageId); if (getData.Count() > 0) { db.CostGoods_CostManageFlowOperate.DeleteAllOnSubmit(getData); db.SubmitChanges(); } } } } }