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

521 lines
22 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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));
}
}
}
}
}