SGGL_JT/SUBQHSE/BLL/Customization/ZHGL/ProblemNoticeService.cs

521 lines
22 KiB
C#
Raw Normal View History

2025-04-07 17:43:30 +08:00
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Security.Policy;
using System.Text;
using System.Threading.Tasks;
using System.Web.UI.WebControls;
using Microsoft.Office.Interop.Excel;
using Model;
namespace BLL
{
public class ProblemNoticeService
{
//创建一个枚举包含ProblemNotic,ProblemReply两个字符串
public enum ProblemFormType
{
ProblemNotice,
ProblemReply
}
public static Problem_Notice GetProblemNoticeById(string proNoticeId)
{
using (Model.SUBQHSEDB db = new Model.SUBQHSEDB(Funs.ConnString))
{
return db.Problem_Notice.FirstOrDefault(e => e.ProNoticeId == proNoticeId);
}
}
/// <summary>
/// 添加
/// </summary>
/// <param name="model"></param>
public static void Add(Model.Problem_Notice model)
{
using (Model.SUBQHSEDB db = new Model.SUBQHSEDB(Funs.ConnString))
{
db.Problem_Notice.InsertOnSubmit(model);
db.SubmitChanges();
}
}
/// <summary>
/// 修改
/// </summary>
/// <param name="model"></param>
public static void Update(Model.Problem_Notice model)
{
using (var db = new Model.SUBQHSEDB(Funs.ConnString))
{
Model.Problem_Notice newModel = db.Problem_Notice.First(e => e.ProNoticeId == model.ProNoticeId);
newModel.ProjectId = model.ProjectId;
newModel.ProCode = model.ProCode;
newModel.CheckMans = model.CheckMans;
newModel.CheckStartTime = model.CheckStartTime;
newModel.CheckEndTime = model.CheckEndTime;
newModel.Resume = model.Resume;
newModel.OtherJob = model.OtherJob;
newModel.Unitid = model.Unitid;
newModel.SupervisionMan = model.SupervisionMan;
//newModel.CreateUser = model.CreateUser;
newModel.CheckUnitDatetime = model.CheckUnitDatetime;
newModel.CheckUnitSignature = model.CheckUnitSignature;
newModel.CheckMansDatetime = model.CheckMansDatetime;
newModel.CheckMansSignature = model.CheckMansSignature;
newModel.State = model.State;
newModel.UnitApproveUserIds = model.UnitApproveUserIds;
newModel.SubUnitApproveUserIds = model.SubUnitApproveUserIds;
newModel.ProjectUnitApproveUserIds = model.ProjectUnitApproveUserIds;
//newModel.TestedUnitManDatetime = model.TestedUnitManDatetime;
//newModel.TestedUnitManSignature = model.TestedUnitManSignature;
//newModel.ReviewOpinions = model.ReviewOpinions;
//newModel.ReviewDatetime = model.ReviewDatetime;
//newModel.ReviewSignature = model.ReviewSignature;
//newModel.LeaderDatetime = model.LeaderDatetime;
//newModel.LeaderSignature = model.LeaderSignature;
//newModel.InspectionUnitOpinions = model.InspectionUnitOpinions;
//newModel.InspectionUnitDatetime = model.InspectionUnitDatetime;
//newModel.InspectionUnitSignature = model.InspectionUnitSignature;
db.SubmitChanges();
}
}
/// <summary>
/// 审批最末级别
/// </summary>
/// <param name="proNoticeId"></param>
/// <returns></returns>
public static int GetEndApproveLevel(string proNoticeId)
{
int EndApproveLevel = 2;
var table = GetProblemNoticeById(proNoticeId);
if (table.ProType == "1")
{
EndApproveLevel = 3; //项目级别
}
return EndApproveLevel;
}
/// <summary>
/// 创建通知单第一个审批流程
/// </summary>
/// <param name="proNoticeId"></param>
public static void CreateFirstNoticeApprove(string proNoticeId)
{
var approvelist = ProblemNoticeApprove.GetAllProblem_NoticeApproveByParentId(proNoticeId);
var noAgreeCount = approvelist.Where(x => x.IsAgree == 1).Count();
if (approvelist.Count == 0 || noAgreeCount > 0)
{
ProblemNoticeApprove.DeleteProblem_NoticeApproveByParentId(proNoticeId);
var addApproveList = GetApproveManModels(proNoticeId)
.Where(x => x.Level == 1);
foreach (var item in addApproveList)
{
Model.Problem_NoticeApprove _Approve = new Model.Problem_NoticeApprove();
_Approve.ApproveId = SQLHelper.GetNewID(typeof(Model.Problem_NoticeApprove));
_Approve.ParentId = proNoticeId;
_Approve.ApproveMan = item.Userid;
_Approve.ApproveDate = "";
_Approve.State = 0;
_Approve.IsAgree = 0;
_Approve.ApproveIdea = "";
_Approve.ApproveType = item.Rolename;
_Approve.ApproveForm = ProblemFormType.ProblemNotice.ToString();
BLL.ProblemNoticeApprove.AddProblem_NoticeApprove(_Approve);
}
}
}
/// <summary>
/// 创建回复单第一个审批流程
/// </summary>
/// <param name="proNoticeId"></param>
public static void CreatFirstReplyApprove(string proNoticeId)
{
var model = GetReplyApproveManModels(proNoticeId).OrderBy(x => x.Number).FirstOrDefault();
Model.Problem_NoticeApprove _Approve = new Model.Problem_NoticeApprove();
_Approve.ApproveId = SQLHelper.GetNewID(typeof(Model.Problem_NoticeApprove));
_Approve.ParentId = proNoticeId + "reply";
_Approve.ApproveMan = model.Userid;
_Approve.ApproveDate = "";
_Approve.State = 0;
_Approve.IsAgree = 0;
_Approve.ApproveIdea = "";
_Approve.ApproveType = model.Rolename;
_Approve.ApproveForm = ProblemFormType.ProblemReply.ToString();
BLL.ProblemNoticeApprove.AddProblem_NoticeApprove(_Approve);
}
/// <summary>
/// 根据角色名称获取审批级别
/// </summary>
/// <param name="rolename"></param>
/// <returns></returns>
public static int GetReplylevelByRolename(string rolename)
{
int level = 0;
switch (rolename)
{
case "集团审批组":
level = 1;
break;
case "子公司审批组":
level = 2;
break;
case "项目审批组":
level = 3;
break;
default:
break;
}
return level;
}
/// <summary>
/// 获取审批人列表
/// </summary>
/// <param name="proNoticeId"></param>
/// <returns></returns>
public static List<ApproveManModel> GetApproveManModels(string proNoticeId)
{
Model.Problem_Notice table = GetProblemNoticeById(proNoticeId);
List<ApproveManModel> approveManModels = new List<ApproveManModel>();
var level_1 = table.UnitApproveUserIds.Split(',');
var level_2 = table.SubUnitApproveUserIds.Split(',');
var level_3 = table.ProjectUnitApproveUserIds.Split(',');
int i = 0;
if (level_1.Length > 0)
{
foreach (var item in level_1)
{
approveManModels.Add(new ApproveManModel { Number = i, Userid = item, Rolename = "集团审批组", Level = 1 });
i++;
}
}
if (level_2.Length > 0)
{
foreach (var item in level_2)
{
approveManModels.Add(new ApproveManModel { Number = i, Userid = item, Rolename = "子公司审批组", Level = 2 });
i++;
}
}
if (level_3.Length > 0)
{
foreach (var item in level_3)
{
approveManModels.Add(new ApproveManModel { Number = i, Userid = item, Rolename = "项目审批组", Level = 3 });
i++;
}
}
return approveManModels;
}
/// <summary>
/// 获取回复审批人列表
/// </summary>
/// <param name="proNoticeId"></param>
/// <returns></returns>
public static List<ApproveManModel> GetReplyApproveManModels(string proNoticeId)
{
var approvelist = ProblemNoticeApprove.GetAllProblem_NoticeApproveByParentId(proNoticeId).OrderByDescending(x => x.ApproveDate);
List<ApproveManModel> approveManModels = new List<ApproveManModel>();
int i = 0;
foreach (var item in approvelist)
{
approveManModels.Add(new ApproveManModel { Number = i, Userid = item.ApproveMan, Rolename = item.ApproveType, Level = GetReplylevelByRolename(item.ApproveType) });
i++;
}
return approveManModels;
}
/// <summary>
/// 是否可以拒绝
/// </summary>
/// <param name="proNoticeId"></param>
/// <param name="userid"> </param>
/// <returns></returns>
public static bool IsCanRefuse(string proNoticeId, string userid)
{
bool result = true;
var approvelist = ProblemNoticeApprove.GetProblem_NoticeApproveByParentId(proNoticeId);
var thisApprovemodel = approvelist.Where(x => x.ApproveMan == userid).FirstOrDefault();
if (thisApprovemodel != null)
{
var thisApproveLevel = GetApproveManModels(proNoticeId)
.Find(x => x.Userid == userid && x.Rolename == thisApprovemodel.ApproveType).Level;
if (thisApproveLevel > 1)
{
result = false;
}
}
return result;
}
/// <summary>
/// 通知单审批
/// </summary>
/// <param name="proNoticeId"></param>
/// <param name="userid"></param>
/// <param name="isAgree"></param>
/// <param name="idea"></param>
public static void Approve(string proNoticeId, string userid, bool isAgree, string idea)
{
var approvelist = ProblemNoticeApprove.GetProblem_NoticeApproveByParentId(proNoticeId);
var thisApprovemodel = approvelist.Where(x => x.ApproveMan == userid).FirstOrDefault();
if (thisApprovemodel == null) { return; }
var thisApproveLevel = GetApproveManModels(proNoticeId).Find(x => x.Userid == userid && x.Rolename == thisApprovemodel.ApproveType).Level;
if (thisApprovemodel != null)
{
thisApprovemodel.ApproveDate = Funs.GetNewDateTimeOrNow("").ToString();
thisApprovemodel.IsAgree = isAgree ? 2 : 1;
thisApprovemodel.ApproveIdea = idea;
thisApprovemodel.State = 1;
ProblemNoticeApprove.UpdateProblem_NoticeApprove(thisApprovemodel);
if (isAgree)
{
if (ProblemNoticeApprove.IsCountersignerAllAgree(proNoticeId, thisApprovemodel.ApproveType)) //当前节点是否全部审批结束
{
if (thisApproveLevel < GetEndApproveLevel(proNoticeId)) //是否最末节点
{
var addApproveList = GetApproveManModels(proNoticeId)
.Where(x => x.Level == (thisApproveLevel + 1));
foreach (var item in addApproveList)
{
Model.Problem_NoticeApprove _Approve = new Model.Problem_NoticeApprove();
_Approve.ApproveId = SQLHelper.GetNewID(typeof(Model.Problem_NoticeApprove));
_Approve.ParentId = proNoticeId;
_Approve.ApproveMan = item.Userid;
_Approve.ApproveDate = "";
_Approve.State = 0;
_Approve.IsAgree = 0;
_Approve.ApproveIdea = "";
_Approve.ApproveType = item.Rolename;
_Approve.ApproveForm = ProblemFormType.ProblemNotice.ToString();
BLL.ProblemNoticeApprove.AddProblem_NoticeApprove(_Approve);
}
if (addApproveList.FirstOrDefault().Level == 2 && GetEndApproveLevel(proNoticeId) == 3) //检查组直接发给项目 抄送三级单位
{
var autoApproveList = ProblemNoticeApprove.GetProblem_NoticeApproveByParentId(proNoticeId);
foreach (var approve in autoApproveList)
{
Approve(proNoticeId, approve.ApproveMan, true, "");
}
}
}
else
{
var model = GetProblemNoticeById(proNoticeId);
model.State = "2";
Update(model);
CreatFirstReplyApprove(proNoticeId);
}
}
}
else
{
var model = GetProblemNoticeById(proNoticeId);
model.State = "0";
Update(model);
}
}
}
/// <summary>
/// 回复单审批
/// </summary>
/// <param name="proNoticeId"></param>
/// <param name="userid"></param>
/// <param name="isAgree"></param>
/// <param name="idea"></param>
public static void ReplyApprove(string proNoticeId, string userid, bool isAgree, string idea)
{
string replyNoticeId = proNoticeId + "reply";
var approvelist = ProblemNoticeApprove.GetProblem_NoticeApproveByParentId(replyNoticeId);
var thisApprovemodel = approvelist.Where(x => x.ApproveMan == userid).FirstOrDefault();
if (thisApprovemodel == null) { return; }
var thisApproveNumber = GetReplyApproveManModels(proNoticeId).Find(x => x.Userid == userid && x.Rolename == thisApprovemodel.ApproveType).Number;
if (thisApprovemodel != null)
{
thisApprovemodel.ApproveDate = Funs.GetNewDateTimeOrNow("").ToString();
thisApprovemodel.IsAgree = isAgree ? 2 : 1;
thisApprovemodel.ApproveIdea = idea;
thisApprovemodel.State = 1;
ProblemNoticeApprove.UpdateProblem_NoticeApprove(thisApprovemodel);
if (isAgree)
{
if (ProblemNoticeApprove.IsCountersignerAllAgree(replyNoticeId, thisApprovemodel.ApproveType)) //当前节点是否全部审批结束
{
if (thisApproveNumber < GetReplyApproveManModels(proNoticeId).Max(x => x.Number)) //是否最末节点
{
var addApproveList = GetReplyApproveManModels(proNoticeId)
.Where(x => x.Number == (thisApproveNumber + 1));
foreach (var item in addApproveList)
{
Model.Problem_NoticeApprove _Approve = new Model.Problem_NoticeApprove();
_Approve.ApproveId = SQLHelper.GetNewID(typeof(Model.Problem_NoticeApprove));
_Approve.ParentId = replyNoticeId;
_Approve.ApproveMan = item.Userid;
_Approve.ApproveDate = "";
_Approve.State = 0;
_Approve.IsAgree = 0;
_Approve.ApproveIdea = "";
_Approve.ApproveType = item.Rolename;
_Approve.ApproveForm = ProblemFormType.ProblemReply.ToString();
BLL.ProblemNoticeApprove.AddProblem_NoticeApprove(_Approve);
}
}
else
{
var model = GetProblemNoticeById(proNoticeId);
model.State = "3";//回复审批结束,归档
Update(model);
}
}
}
else
{
CreatFirstReplyApprove(proNoticeId);
}
}
}
/// <summary>
/// 回复
/// </summary>
/// <param name="model"></param>
public static void Reply(Model.Problem_Notice model)
{
using (var db = new Model.SUBQHSEDB(Funs.ConnString))
{
Model.Problem_Notice newModel = db.Problem_Notice.First(e => e.ProNoticeId == model.ProNoticeId);
newModel.State = model.State;
newModel.TestedUnitManDatetime = model.TestedUnitManDatetime;
newModel.TestedUnitManSignature = model.TestedUnitManSignature;
newModel.TestedUnitManOpinions = model.TestedUnitManOpinions;
newModel.ReviewOpinions = model.ReviewOpinions;
newModel.ReviewDatetime = model.ReviewDatetime;
newModel.ReviewSignature = model.ReviewSignature;
newModel.LeaderOpinions = model.LeaderOpinions;
newModel.LeaderDatetime = model.LeaderDatetime;
newModel.LeaderSignature = model.LeaderSignature;
newModel.InspectionUnitOpinions = model.InspectionUnitOpinions;
newModel.InspectionUnitDatetime = model.InspectionUnitDatetime;
newModel.InspectionUnitSignature = model.InspectionUnitSignature;
db.SubmitChanges();
}
}
/// <summary>
/// 回复修改明细项
/// </summary>
/// <param name="model"></param>
public static void UpdateDetail(Model.Problem_Notice_C model)
{
using (var db = new Model.SUBQHSEDB(Funs.ConnString))
{
Model.Problem_Notice_C newModel = db.Problem_Notice_C.First(e => e.ProNoticeCId == model.ProNoticeCId);
newModel.ReSituation = model.ReSituation;
newModel.ReSituationTime = model.ReSituationTime;
db.SubmitChanges();
}
}
/// <summary>
/// 删除
/// </summary>
/// <param name="modelId">主键ID</param>
public static void Delete(string modelId)
{
using (var db = new Model.SUBQHSEDB(Funs.ConnString))
{
Model.Problem_Notice newModel = db.Problem_Notice.First(e => e.ProNoticeId == modelId);
db.Problem_Notice.DeleteOnSubmit(newModel);
db.SubmitChanges();
}
}
public static ProblemNoticeDetailOutput GetDetailItem(string proNoticeCId)
{
using (var db = new Model.SUBQHSEDB(Funs.ConnString))
{
Model.ProblemNoticeDetailOutput modeOutput = new ProblemNoticeDetailOutput();
Model.Problem_Notice_C Model = db.Problem_Notice_C.First(e => e.ProNoticeCId == proNoticeCId);
if (Model != null)
{
modeOutput.ProNoticeCId = Model.ProNoticeCId;
modeOutput.QueDescribe = Model.QueDescribe;
modeOutput.Requirements = Model.Requirements;
modeOutput.ReSituation = Model.ReSituation;
modeOutput.QueTypeName = Model.QueType;
modeOutput.RiskLevelName = Model.RiskLevel;
modeOutput.ImageUrlBefor = AttachFileService.getFileUrl(Model.ProNoticeCId);
modeOutput.ImageUrlAfter = AttachFileService.getFileUrl(Model.ProNoticeCId + "Ref");
modeOutput.CheckMan = UserService.getUserNamesUserIdsForApi(Model.CheckMan);
}
return modeOutput;
}
}
//根据ProblemNoticeDetailInput 保存
public static void SaveDetailItem(ProblemNoticeDetailInput model)
{
using (var db = new Model.SUBQHSEDB(Funs.ConnString))
{
Model.Problem_Notice_C Model = db.Problem_Notice_C.First(e => e.ProNoticeCId == model.ProNoticeCId);
if (Model != null)
{
Model.ReSituation = model.ReSituation;
Model.ReSituationTime = DateTime.Now;
db.SubmitChanges();
}
////保存附件
if (!string.IsNullOrEmpty(model.ImageUrlAfter))
{
UploadFileService.SaveAttachUrl(UploadFileService.GetSourceByAttachUrl(model.ImageUrlAfter, 10, null), model.ImageUrlAfter, Const.ProblemNoticeManagerMenuId, model.ProNoticeCId+"Ref");
}
else
{
CommonService.DeleteAttachFileById(Const.ProblemNoticeManagerMenuId, model.ProNoticeCId + "Ref");
}
}
}
public static void SendNotice(string proNoticeId)
{
using (var db = new Model.SUBQHSEDB(Funs.ConnString))
{
var model = db.Problem_Notice.First(x => x.ProNoticeId == proNoticeId);
var createname = UserService.getUserNamesUserIdsForApi(model.CreateUser);
var list = db.Problem_Notice_C.Where(e => e.ProNoticeId == proNoticeId && (e.CheckMan !=null || e.CheckMan !="") ).Select(x=>x.CheckMan).Distinct().ToList();
if (list.Count > 0)
{
string userIds=string.Join(",", list);
APICommonService.SendSubscribeMessage(userIds, "安全监督检查待整改", createname, string.Format("{0:yyyy-MM-dd HH:mm:ss}", model.CreateDate));
}
}
}
}
}