using Model;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
namespace BLL
{
///
/// 安全费用管理
///
public static class CostManageService
{
///
/// 根据主键获取安全费用管理
///
///
///
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();
}
}
}
public static string PushDataToHSE(string projectId, string contractNum, string costManageId)
{
try
{
string message = "";
// 查询当前合同所有审核通过的数据
var costData = from x in Funs.DB.CostGoods_CostManage
where x.ProjectId == projectId && x.ContractNum == contractNum && x.States == Const.State_2
orderby x.CostManageDate descending
select x;
var projectModel = ProjectService.GetProjectByProjectId(projectId);
var contractModel = CostManageService.GetCostManageById(costManageId);
//decimal totalAmount = costData.Sum(x => x.SumMoney ?? 0);
var files = new List