xinjiang/SGGL/BLL/API/HSSE/APIPunishNoticeService.cs

481 lines
26 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using EmitMapper;
namespace BLL
{
/// <summary>
/// 处罚通知单
/// </summary>
public static class APIPunishNoticeService
{
#region PunishNoticeId获取处罚通知单
/// <summary>
/// 根据 PunishNoticeId获取处罚通知单
/// </summary>
/// <param name="PunishNoticeId"></param>
/// <returns></returns>
public static Model.PunishNoticeItem getPunishNoticeById(string PunishNoticeId)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var getInfo = from x in db.Check_PunishNotice
where x.PunishNoticeId == PunishNoticeId
select new Model.PunishNoticeItem
{
PunishNoticeId = x.PunishNoticeId,
ProjectId = x.ProjectId,
PunishNoticeCode = x.PunishNoticeCode,
UnitId = x.UnitId,
UnitName = db.Base_Unit.First(u => u.UnitId == x.UnitId).UnitName,
PunishPersonId = x.PunishPersonId,
PunishPersonName = db.Sys_User.First(u => u.UserId == x.PunishPersonId).UserName,
ContractNum = x.ContractNum,
PunishNoticeDate = string.Format("{0:yyyy-MM-dd}", x.PunishNoticeDate),
BasicItem = x.BasicItem,
IncentiveReason = x.IncentiveReason,
PunishMoney = x.PunishMoney ?? 0,
Currency = x.Currency,
FileContents = System.Web.HttpUtility.HtmlDecode(x.FileContents),
CompileManId = x.CompileMan,
CompileManName = db.Sys_User.First(u => u.UserId == x.CompileMan).UserName,
CompileDate = string.Format("{0:yyyy-MM-dd HH:mm}", x.CompileDate),
SignManId = x.SignMan,
SignManName = db.Sys_User.First(u => u.UserId == x.SignMan).UserName,
SignDate = string.Format("{0:yyyy-MM-dd HH:mm}", x.SignDate),
ApproveManId = x.ApproveMan,
ApproveManName = db.Sys_User.First(u => u.UserId == x.ApproveMan).UserName,
ApproveDate = string.Format("{0:yyyy-MM-dd HH:mm}", x.ApproveDate),
DutyPersonId = x.DutyPersonId,
DutyPersonName = db.Sys_User.First(u => u.UserId == x.DutyPersonId).UserName,
DutyPersonDate = string.Format("{0:yyyy-MM-dd HH:mm}", x.DutyPersonDate),
ProfessionalEngineerId = x.ProfessionalEngineerId,
ProfessionalEngineerName = db.Sys_User.First(u => u.UserId == x.ProfessionalEngineerId).UserName,
ProfessionalEngineerTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.ProfessionalEngineerTime),
ConstructionManagerId = x.ConstructionManagerId,
ConstructionManagerName = db.Sys_User.First(u => u.UserId == x.ConstructionManagerId).UserName,
ConstructionManagerTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.ConstructionManagerTime),
UnitHeadManId = x.UnitHeadManId,
UnitHeadManName = db.Sys_User.First(u => u.UserId == x.UnitHeadManId).UserName,
UnitHeadManTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.UnitHeadManTime),
States = x.States,
PunishStates = x.PunishStates,
PunishUrl = APIUpLoadFileService.getFileUrl(Const.ProjectPunishNoticeStatisticsMenuId, x.PunishNoticeId, null),
ReceiptUrl = APIUpLoadFileService.getFileUrl(Const.ProjectPunishNoticeMenuId, x.PunishNoticeId, null),
FlowOperateItem = getFlowOperateItem(x.PunishNoticeId),
PunishNoticeItemItem = GetPunishNoticeItemList(x.PunishNoticeId),
};
return getInfo.FirstOrDefault();
}
}
public static List<Model.PunishNoticeItemItem> GetPunishNoticeItemList(string punishNoticeId)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
return (from x in db.Check_PunishNoticeItem
where x.PunishNoticeId == punishNoticeId
orderby x.SortIndex
select new Model.PunishNoticeItemItem
{
PunishNoticeItemId = x.PunishNoticeItemId,
PunishNoticeId = x.PunishNoticeId,
PunishContent = x.PunishContent,
PunishMoney = x.PunishMoney ?? 0,
SortIndex = x.SortIndex,
}).ToList();
}
}
#endregion
#region ID
/// <summary>
/// 根据ID 获取审核信息
/// </summary>
/// <returns></returns>
public static List<Model.FlowOperateItem> getFlowOperateItem(string punishNoticeId)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var getInfo = from x in db.Check_PunishNoticeFlowOperate
where x.PunishNoticeId == punishNoticeId
orderby x.OperateTime descending
select new Model.FlowOperateItem
{
FlowOperateId = x.FlowOperateId,
DataId = x.PunishNoticeId,
AuditFlowName = x.OperateName,
OperaterId = x.OperateManId,
OperaterName = db.Sys_User.First(z => z.UserId == x.OperateManId).UserName,
OperaterTime = string.Format("{0:yyyy-MM-dd HH:mm:ss}", x.OperateTime),
IsAgree = x.IsAgree,
Opinion = x.Opinion,
SignatureUrl = APIUpLoadFileService.getFileUrl(string.Empty, x.SignatureUrl),
};
return getInfo.ToList();
}
}
#endregion
#region
/// <summary>
/// 获取处罚通知单列表信息
/// </summary>
/// <param name="projectId"></param>
/// <param name="unitId"></param>
/// <param name="strParam"></param>
/// <returns></returns>
public static List<Model.PunishNoticeItem> getPunishNoticeList(string projectId, string unitId, string strParam, string states)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var getPunishNotice = from x in db.Check_PunishNotice
where x.ProjectId == projectId && (x.UnitId == unitId || unitId == null) && x.PunishStates == states
orderby x.PunishNoticeCode descending
select new Model.PunishNoticeItem
{
PunishNoticeId = x.PunishNoticeId,
ProjectId = x.ProjectId,
PunishNoticeCode = x.PunishNoticeCode,
UnitId = x.UnitId,
UnitName = db.Base_Unit.First(u => u.UnitId == x.UnitId).UnitName,
ContractNum = x.ContractNum,
PunishNoticeDate = string.Format("{0:yyyy-MM-dd}", x.PunishNoticeDate),
BasicItem = x.BasicItem,
IncentiveReason = x.IncentiveReason,
PunishMoney = x.PunishMoney ?? 0,
Currency = x.Currency,
//FileContents = System.Web.HttpUtility.HtmlDecode(x.FileContents),
CompileManId = x.CompileMan,
CompileManName = db.Sys_User.First(u => u.UserId == x.CompileMan).UserName,
CompileDate = string.Format("{0:yyyy-MM-dd}", x.CompileDate),
//SignManId = x.SignMan,
//SignManName = db.Sys_User.First(u => u.UserId == x.SignMan).UserName,
//ApproveManId = x.ApproveMan,
//ApproveManName = db.Sys_User.First(u => u.UserId == x.ApproveMan).UserName,
States = x.States,
PunishStates = x.PunishStates,
//PunishUrl = db.AttachFile.FirstOrDefault(z => z.MenuId == Const.ProjectPunishNoticeStatisticsMenuId && z.ToKeyId == x.PunishNoticeId).AttachUrl.Replace('\\', '/'),
//ReceiptUrl = db.AttachFile.FirstOrDefault(z => z.MenuId == Const.ProjectPunishNoticeMenuId && z.ToKeyId == x.PunishNoticeId).AttachUrl.Replace('\\', '/'),
};
if (!string.IsNullOrEmpty(strParam))
{
getPunishNotice = getPunishNotice.Where(x => x.PunishNoticeCode.Contains(strParam) || x.IncentiveReason.Contains(strParam));
}
return getPunishNotice.ToList();
}
}
#endregion
#region Check_PunishNotice
/// <summary>
/// 保存Check_PunishNotice
/// </summary>
/// <param name="newItem">处罚通知单</param>
/// <returns></returns>
public static void SavePunishNotice(Model.PunishNoticeItem newItem)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
bool insertPunishNoticeItemItem = false;
Model.Check_PunishNotice newPunishNotice = new Model.Check_PunishNotice
{
PunishNoticeId = newItem.PunishNoticeId,
PunishNoticeCode = newItem.PunishNoticeCode,
ProjectId = newItem.ProjectId,
PunishNoticeDate = Funs.GetNewDateTime(newItem.PunishNoticeDate),
UnitId = newItem.UnitId,
ContractNum = newItem.ContractNum,
IncentiveReason = newItem.IncentiveReason,
BasicItem = newItem.BasicItem,
PunishMoney = newItem.PunishMoney,
Currency = newItem.Currency,
FileContents = System.Web.HttpUtility.HtmlEncode(newItem.FileContents),
States = Const.State_0,
PunishStates = newItem.PunishStates,
};
if (!string.IsNullOrEmpty(newItem.CompileManId))
{
newPunishNotice.CompileMan = newItem.CompileManId;
}
if (!string.IsNullOrEmpty(newItem.PunishPersonId))
{
newPunishNotice.PunishPersonId = newItem.PunishPersonId;
}
if (newPunishNotice.PunishStates == Const.State_1)
{
newPunishNotice.SignMan = newItem.SignManId;
}
var getUpdate = db.Check_PunishNotice.FirstOrDefault(x => x.PunishNoticeId == newItem.PunishNoticeId);
if (getUpdate == null)
{
insertPunishNoticeItemItem = true;
newPunishNotice.CompileDate = DateTime.Now;
newPunishNotice.PunishNoticeId = SQLHelper.GetNewID();
newPunishNotice.PunishNoticeCode = CodeRecordsService.ReturnCodeByMenuIdProjectId(Const.ProjectPunishNoticeMenuId, newPunishNotice.ProjectId, newPunishNotice.UnitId);
db.Check_PunishNotice.InsertOnSubmit(newPunishNotice);
db.SubmitChanges();
CodeRecordsService.InsertCodeRecordsByMenuIdProjectIdUnitId(Const.ProjectPunishNoticeMenuId, newPunishNotice.ProjectId, newPunishNotice.UnitId, newPunishNotice.PunishNoticeId, newPunishNotice.CompileDate);
//// 回写巡检记录表
if (!string.IsNullOrEmpty(newItem.HazardRegisterId))
{
List<string> listIds = Funs.GetStrListByStr(newItem.HazardRegisterId, ',');
foreach (var item in listIds)
{
var getHazardRegister = db.HSSE_Hazard_HazardRegister.FirstOrDefault(x => x.HazardRegisterId == item);
if (getHazardRegister != null)
{
getHazardRegister.States = "3";
getHazardRegister.HandleIdea += "已下发处罚通知单:" + newPunishNotice.PunishNoticeCode;
getHazardRegister.ResultId = newPunishNotice.PunishNoticeId;
getHazardRegister.ResultType = "2";
db.SubmitChanges();
}
}
}
//// 回写专项检查明细表
if (!string.IsNullOrEmpty(newItem.CheckSpecialDetailId))
{
List<string> listIds = Funs.GetStrListByStr(newItem.CheckSpecialDetailId, ',');
foreach (var item in listIds)
{
var getCheckSpecialDetail = db.Check_CheckSpecialDetail.FirstOrDefault(x => x.CheckSpecialDetailId == item);
if (getCheckSpecialDetail != null)
{
string dataType = string.Empty;
string dataId = string.Empty;
if (string.IsNullOrEmpty(getCheckSpecialDetail.DataType))
{
dataType = "2";
dataId = "2," + newPunishNotice.PunishNoticeId;
}
else
{
dataType = getCheckSpecialDetail.DataType+",2";
dataId = getCheckSpecialDetail.DataId + "|2," + newPunishNotice.PunishNoticeId;
}
getCheckSpecialDetail.DataType = dataType;
getCheckSpecialDetail.DataId = dataId;
db.SubmitChanges();
}
}
}
}
else
{
newPunishNotice.PunishNoticeId = getUpdate.PunishNoticeId;
getUpdate.PunishStates = newItem.PunishStates;
if (newPunishNotice.PunishStates == "0" || newPunishNotice.PunishStates == "1") ////编制人 修改或提交
{
var geDeleteItems = from x in db.Check_PunishNoticeItem
where x.PunishNoticeId == getUpdate.PunishNoticeId
select x;
if (geDeleteItems.Count() > 0)
{
db.Check_PunishNoticeItem.DeleteAllOnSubmit(geDeleteItems);
db.SubmitChanges();
}
insertPunishNoticeItemItem = true;
getUpdate.PunishNoticeDate = newPunishNotice.PunishNoticeDate;
getUpdate.UnitId = newPunishNotice.UnitId;
getUpdate.ContractNum = newPunishNotice.ContractNum;
getUpdate.IncentiveReason = newPunishNotice.IncentiveReason;
getUpdate.BasicItem = newPunishNotice.BasicItem;
getUpdate.PunishMoney = newPunishNotice.PunishMoney;
getUpdate.Currency = newPunishNotice.Currency;
getUpdate.FileContents = newPunishNotice.FileContents;
if (newPunishNotice.PunishStates == "1" && !string.IsNullOrEmpty(newItem.SignManId))
{
getUpdate.SignMan = newItem.SignManId;
}
else
{
newPunishNotice.PunishStates = getUpdate.PunishStates = "0";
}
db.SubmitChanges();
}
else if (newPunishNotice.PunishStates == "2") ////【签发】总包安全经理
{
/// 不同意 打回 同意抄送专业工程师、施工经理、相关施工分包单位并提交【批准】总包项目经理
if (newItem.IsAgree == false)
{
newPunishNotice.PunishStates = getUpdate.PunishStates = "0";
}
else
{
if (!string.IsNullOrEmpty(newItem.ProfessionalEngineerId))
{
getUpdate.ProfessionalEngineerId = newItem.ProfessionalEngineerId;
}
if (!string.IsNullOrEmpty(newItem.ConstructionManagerId))
{
getUpdate.ConstructionManagerId = newItem.ConstructionManagerId;
}
if (!string.IsNullOrEmpty(newItem.UnitHeadManId))
{
getUpdate.UnitHeadManId = newItem.UnitHeadManId;
}
if (!string.IsNullOrEmpty(newItem.ApproveManId))
{
getUpdate.ApproveMan = newItem.ApproveManId;
getUpdate.SignDate = DateTime.Now;
getUpdate.SginOpinion = "同意";
}
else
{
newPunishNotice.PunishStates = getUpdate.States = "1";
}
}
db.SubmitChanges();
}
else if (newPunishNotice.PunishStates == "3") ////【批准】总包项目经理
{
/// 不同意 打回 同意下发【回执】施工分包单位
if (newItem.IsAgree == false || string.IsNullOrEmpty(newItem.DutyPersonId))
{
newPunishNotice.PunishStates = getUpdate.PunishStates = "1";
}
else
{
getUpdate.DutyPersonId = newItem.DutyPersonId;
getUpdate.ApproveDate = DateTime.Now;
getUpdate.ApproveOpinion = "同意";
}
db.SubmitChanges();
}
else if (newPunishNotice.PunishStates == "4") ////【批准】总包项目经理
{
/// 不同意 打回 同意下发【回执】施工分包单位
if (string.IsNullOrEmpty(newItem.ReceiptUrl))
{
newPunishNotice.PunishStates = getUpdate.PunishStates = "3";
}
else
{
getUpdate.DutyPersonDate = DateTime.Now;
getUpdate.States = Const.State_2;
}
db.SubmitChanges();
}
}
if (insertPunishNoticeItemItem)
{
//// 新增明细
if (newItem.PunishNoticeItemItem != null && newItem.PunishNoticeItemItem.Count() > 0)
{
foreach (var rItem in newItem.PunishNoticeItemItem)
{
Model.Check_PunishNoticeItem newPItem = new Model.Check_PunishNoticeItem
{
PunishNoticeItemId = SQLHelper.GetNewID(),
PunishNoticeId = newPunishNotice.PunishNoticeId,
PunishContent = rItem.PunishContent,
SortIndex = rItem.SortIndex,
PunishMoney=rItem.PunishMoney,
};
db.Check_PunishNoticeItem.InsertOnSubmit(newPItem);
db.SubmitChanges();
}
}
}
//// 增加审核记录
if (newItem.FlowOperateItem != null && newItem.FlowOperateItem.Count() > 0)
{
var getOperate = newItem.FlowOperateItem.FirstOrDefault();
if (getOperate != null && !string.IsNullOrEmpty(getOperate.OperaterId))
{
if (newItem.IsAgree == false)
{
if (newPunishNotice.PunishStates == "2")
{
getUpdate.SginOpinion = getOperate.Opinion;
}
else if (newPunishNotice.PunishStates == "3")
{
getUpdate.ApproveOpinion = getOperate.Opinion;
}
}
Model.Check_PunishNoticeFlowOperate newOItem = new Model.Check_PunishNoticeFlowOperate
{
FlowOperateId = SQLHelper.GetNewID(),
PunishNoticeId = newPunishNotice.PunishNoticeId,
OperateName = getOperate.AuditFlowName,
OperateManId = getOperate.OperaterId,
OperateTime = DateTime.Now,
IsAgree = getOperate.IsAgree,
Opinion = getOperate.Opinion,
};
db.Check_PunishNoticeFlowOperate.InsertOnSubmit(newOItem);
db.SubmitChanges();
}
}
if (newItem.PunishStates == Const.State_0 || newItem.PunishStates == Const.State_1)
{ //// 通知单附件
APIUpLoadFileService.SaveAttachUrl(Const.ProjectPunishNoticeStatisticsMenuId, newPunishNotice.PunishNoticeId, newItem.PunishUrl, "0");
}
if (newItem.PunishStates == Const.State_4)
{ //// 回执单附件
APIUpLoadFileService.SaveAttachUrl(Const.ProjectPunishNoticeMenuId, newPunishNotice.PunishNoticeId, newItem.ReceiptUrl, "0");
}
if (getUpdate != null && getUpdate.States == Const.State_2)
{
CommonService.btnSaveData(newPunishNotice.ProjectId, Const.ProjectPunishNoticeMenuId, newPunishNotice.PunishNoticeId, newPunishNotice.CompileMan, true, newPunishNotice.PunishNoticeCode, "../Check/PunishNoticeView.aspx?PunishNoticeId={0}");
var getcheck = db.Check_CheckSpecialDetail.FirstOrDefault(x => x.DataId.Contains(getUpdate.PunishNoticeId));
if (getcheck != null)
{
getcheck.CompleteStatus = true;
getcheck.CompletedDate = DateTime.Now;
db.SubmitChanges();
//// 根据明细ID判断是否全部整改完成 并更新专项检查状态
Check_CheckSpecialService.UpdateCheckSpecialStates(getcheck.CheckSpecialId);
}
}
}
}
#endregion
#region -
/// <summary>
/// 保存处罚单-回执单
/// </summary>
/// <param name="punishNoticeId">主键</param>
/// <param name="attachUrl">回执单路径</param>
public static void SavePunishNoticeReceiptUrl(string punishNoticeId, string attachUrl, string type)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var getPunishNotice = db.Check_PunishNotice.FirstOrDefault(x => x.PunishNoticeId == punishNoticeId);
if (getPunishNotice != null)
{
string menuId = Const.ProjectPunishNoticeMenuId;
if (type == "0")
{
menuId = Const.ProjectPunishNoticeStatisticsMenuId;
}
////保存附件
if (!string.IsNullOrEmpty(attachUrl))
{
UploadFileService.SaveAttachUrl(UploadFileService.GetSourceByAttachUrl(attachUrl, 10, null), attachUrl, menuId, getPunishNotice.PunishNoticeId);
}
else
{
CommonService.DeleteAttachFileById(menuId, getPunishNotice.PunishNoticeId);
}
}
}
}
#endregion
}
}