From 57556b16aafbafebc7f9fc86745ac2ea83e7616d Mon Sep 17 00:00:00 2001 From: username@email.com <yzy2002yzy@163.com> Date: 星期四, 01 七月 2021 14:26:35 +0800 Subject: [PATCH] 流程 请假 销假 待办 已办 我得申请 --- zhengcaioa/Services/WfRunProcessService.cs | 1096 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 1,084 insertions(+), 12 deletions(-) diff --git a/zhengcaioa/Services/WfRunProcessService.cs b/zhengcaioa/Services/WfRunProcessService.cs index 6113573..d35295e 100644 --- a/zhengcaioa/Services/WfRunProcessService.cs +++ b/zhengcaioa/Services/WfRunProcessService.cs @@ -2,6 +2,7 @@ using DTO; using DTO.Models; using IServices; +using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; @@ -15,10 +16,12 @@ { private readonly zhengcaioaContext _context; private readonly IMapper _mapper; - public WfRunProcessService(zhengcaioaContext context, IMapper mapper) + private readonly IWfNeeddeelService _wfNeeddeelService; + public WfRunProcessService(zhengcaioaContext context, IMapper mapper, IWfNeeddeelService wfNeeddeelService) { _context = context; _mapper = mapper; + _wfNeeddeelService = wfNeeddeelService; } public ResultEntity save(WfRunProcessDTO dto) { @@ -29,6 +32,17 @@ if (String.IsNullOrEmpty(model.Id)) { model.Id = Guid.NewGuid().ToString(); + dto.Id = model.Id; + var datestreing = DateTime.Now.ToString("yyyyMMdd"); + var Applyno = _context.WfRunProcesses.Where(x => x.Applyno.Contains(datestreing)).Max(x => x.Applyno); + if (string.IsNullOrEmpty(Applyno)) + { + model.Applyno = datestreing + 1.ToString().PadLeft(4, '0'); + } + else + { + model.Applyno = datestreing + (int.Parse(Applyno.Substring(Applyno.Length - 4)) + 1).ToString().PadLeft(4, '0'); + } _context.WfRunProcesses.Add(model); } else @@ -42,7 +56,7 @@ updateWfRunProcess.Step = model.Step; updateWfRunProcess.ShenpiStatus = model.ShenpiStatus; updateWfRunProcess.Version = model.Version; - + updateWfRunProcess.Deelurl = model.Deelurl; updateWfRunProcess.RecStatus = model.RecStatus; // updateWfRunProcess.Creater = WfRunProcess.Creater; @@ -112,25 +126,21 @@ string[] Applytimes = searchEntity.Applytime.Split("|"); DateTime.TryParse(Applytimes[0], out Applytimestart); DateTime.TryParse(Applytimes[1], out Applytimeend); - //Applytimeend = Applytimeend.AddDays(1); + Applytimeend = Applytimeend.AddDays(1); } ///WfRunProcesses var query = (from a in _context.WfRunProcesses - - - - - + join e in listCode.Where(x => x.CodeTable == "wf_run_process" && x.CodeField == "shenpi_status") on a.ShenpiStatus equals e.CodeSn into esssss from eee in esssss.DefaultIfEmpty() join d in _context.WfApplytypes - on a.Applytiye equals d.Id + on a.Applytiye equals d.Applyno join b in _context.PltUsers on a.Creater equals b.Id @@ -146,7 +156,7 @@ && (string.IsNullOrWhiteSpace(searchEntity.ShenpiStatus) || a.ShenpiStatus == searchEntity.ShenpiStatus.Trim()) && (string.IsNullOrWhiteSpace(searchEntity.Applyno) || a.Applyno == searchEntity.Applyno.Trim()) - + && (string.IsNullOrWhiteSpace(searchEntity.Creater) || a.Creater == searchEntity.Creater.Trim()) select new WfRunProcessDTO { @@ -159,10 +169,11 @@ Content = a.Content, ShenpiStatusName = eee.Comments, ShenpiStatus = a.ShenpiStatus, + Step = a.Step, Version = a.Version, Createtime = a.Createtime, - + Deelurl = a.Deelurl, RecStatus = a.RecStatus, Modifier = a.Modifier, Modifytime = a.Modifytime, @@ -203,14 +214,1075 @@ /// 鑾峰彇鎵�鏈夋湁鏁堟祦绋嬬被鍨� /// </summary> /// <returns></returns> - public List<WfRunProcessDTO> GetList() + public List<WfRunProcessDTO> GetList(string DanjuId = "",string Applytiye = "") { var listRole = _context.WfRunProcesses.Where(r => r.RecStatus == "A").ToList(); + if(!string.IsNullOrEmpty(DanjuId) && !string.IsNullOrEmpty(Applytiye)) + { + listRole = listRole.Where(x=>x.DanjuId == DanjuId && x.Applytiye == Applytiye).ToList(); + } var list = _mapper.Map<List<WfRunProcessDTO>>(listRole); return list; } + + + public ResultEntity WfAskLeave(string DanjuId, string step, string tongguojujue, string Userid,string Content, string title, string version) + { + + ResultEntity result = new ResultEntity(); + result.Result = true; + + + WfRunProcessDTO wfRunProcessDTO = this.GetList(DanjuId, "01").FirstOrDefault(); + if (wfRunProcessDTO != null) + { + version = wfRunProcessDTO.Version; + } + + + if (version == "v1") + { + if (step == "鎻愪氦") + { + //鏇存柊娴佺▼瀹炰緥 + // WfRunProcessDTO wfRunProcessDTO = this.GetList(DanjuId, "01").FirstOrDefault(); + if (wfRunProcessDTO == null) + { + //鎻掑叆娴佺▼瀹炰緥 + wfRunProcessDTO = new WfRunProcessDTO(); + //wfRunProcessDTO.Applyno = + wfRunProcessDTO.Applytime = DateTime.Now; + wfRunProcessDTO.Applytiye = "01"; + wfRunProcessDTO.DanjuId = DanjuId; + wfRunProcessDTO.Content = title; + wfRunProcessDTO.Step = "浜轰簨瀹℃壒"; + wfRunProcessDTO.ShenpiStatus = "D"; + wfRunProcessDTO.Version = version; + wfRunProcessDTO.RecStatus = "A"; + wfRunProcessDTO.Creater = Userid; + wfRunProcessDTO.Createtime = DateTime.Now; + wfRunProcessDTO.Modifier = Userid; + wfRunProcessDTO.Modifytime = DateTime.Now; + wfRunProcessDTO.Deelurl = "/Signin/AskLeave?id=" + DanjuId; + result = this.save(wfRunProcessDTO); + if (result.Result == false) + { + return result; + } + //鏌ヨ澶勭悊浜� + var hrPositions = _context.PltRoles.Where(x => x.RecStatus == "A" && x.RoleName == "浜轰簨").FirstOrDefault(); + if (hrPositions == null) + { + result.Result = false; + result.Message = "鏈壘鍒拌亴浣�"; + return result; + } + var pltUsers = (from a in _context.PltUsers.Where(x => x.RecStatus == "A" && x.Zhiwustatus == "A") + join b in _context.PltUserRoles.Where(x => x.RecStatus == "A" && x.RoleId == hrPositions.Id) on a.Id equals b.UserId + select a + ).ToList(); + + if (pltUsers == null || pltUsers.Count == 0) + { + result.Result = false; + result.Message = "鏈壘鍒板鐞嗕汉"; + return result; + } + foreach (var pltUser in pltUsers) + { + //鎻掑叆寰呭姙 + WfNeeddeelDTO wfNeeddeelDTO = new WfNeeddeelDTO(); + wfNeeddeelDTO.RunProcessId = wfRunProcessDTO.Id; + wfNeeddeelDTO.SendUserId = Userid; + wfNeeddeelDTO.DeelUserId = pltUser.Id; + wfNeeddeelDTO.Sendtime = DateTime.Now; + wfNeeddeelDTO.Resivetime = DateTime.Now; + wfNeeddeelDTO.Step = "浜轰簨瀹℃壒"; + wfNeeddeelDTO.NeeddeelType = "1"; + wfNeeddeelDTO.ChuliStatus = "0"; + wfNeeddeelDTO.Deelurl = "/Signin/AskLeave?id=" + DanjuId; + wfNeeddeelDTO.Content = ""; + wfNeeddeelDTO.Sort = 1; + wfNeeddeelDTO.RecStatus = "A"; + wfNeeddeelDTO.Creater = Userid; + wfNeeddeelDTO.Createtime = DateTime.Now; + wfNeeddeelDTO.Modifier = Userid; + wfNeeddeelDTO.Modifytime = wfNeeddeelDTO.Createtime; + result = _wfNeeddeelService.save(wfNeeddeelDTO); + if (result.Result == false) + { + return result; + } + } + + //鎻掑叆鏂扮殑宸插姙 + WfHistory wfHistoryDTO1 = new WfHistory(); + wfHistoryDTO1.Id = Guid.NewGuid().ToString(); + wfHistoryDTO1.RunProcessId = wfRunProcessDTO.Id; + wfHistoryDTO1.SendUserId = Userid; + wfHistoryDTO1.DeelUserId = wfRunProcessDTO.Creater; + wfHistoryDTO1.Sendtime = DateTime.Now; + wfHistoryDTO1.Resivetime = DateTime.Now; + wfHistoryDTO1.Step = "鎻愪氦"; + wfHistoryDTO1.NeeddeelType = "1"; + wfHistoryDTO1.ChuliStatus = "2"; + wfHistoryDTO1.Deelurl = "/Signin/AskLeave?id=" + DanjuId; + wfHistoryDTO1.Content = ""; + wfHistoryDTO1.Sort = 1; + wfHistoryDTO1.RecStatus = "A"; + wfHistoryDTO1.Creater = Userid; + wfHistoryDTO1.Createtime = DateTime.Now; + wfHistoryDTO1.Modifier = Userid; + wfHistoryDTO1.Modifytime = wfHistoryDTO1.Createtime; + _context.WfHistories.Add(wfHistoryDTO1); + _context.SaveChanges(); + } + else + { + wfRunProcessDTO.Step = "浜轰簨瀹℃壒"; + wfRunProcessDTO.Modifier = Userid; + wfRunProcessDTO.Modifytime = DateTime.Now; + result = this.save(wfRunProcessDTO); + if (result.Result == false) + { + return result; + } + + //鏇存柊寰呭姙 + List<WfNeeddeelDTO> wfNeeddeelDTOs = _wfNeeddeelService.GetList(wfRunProcessDTO.Id, "鎻愪氦"); + var wfHistoryDTOs = _mapper.Map<List<WfHistoryDTO>>(wfNeeddeelDTOs); + + var wfHistoryDTO = wfHistoryDTOs.Where(x => x.DeelUserId == Userid).FirstOrDefault(); + if (wfHistoryDTO == null) + { + result.Result = false; + result.Message = "鏈壘鍒颁唬鍔�"; + return result; + } + wfHistoryDTO.Content = Content; + wfHistoryDTO.ChuliStatus = "2"; + wfHistoryDTO.Modifier = Userid; + wfHistoryDTO.Modifytime = DateTime.Now; + var wfHistories = _mapper.Map<List<WfHistory>>(wfHistoryDTOs); + foreach (var wfHistory in wfHistories) + { + _context.WfHistories.Add(wfHistory); + } + var wfNeeddeels = _mapper.Map<List<WfNeeddeel>>(wfNeeddeelDTOs); + foreach (var wfNeeddeel in wfNeeddeels) + { + //_wfNeeddeelService.ModifyStatus(wfNeeddeel.Id, Userid); + _context.WfNeeddeels.Remove(wfNeeddeel); + } + _context.SaveChanges(); + + //鏌ヨ澶勭悊浜� + var hrPositions = _context.PltRoles.Where(x => x.RecStatus == "A" && x.RoleName == "浜轰簨").FirstOrDefault(); + if (hrPositions == null) + { + result.Result = false; + result.Message = "鏈壘鍒拌亴浣�"; + return result; + } + var pltUsers = (from a in _context.PltUsers.Where(x => x.RecStatus == "A" && x.Zhiwustatus == "A") + join b in _context.PltUserRoles.Where(x => x.RecStatus == "A" && x.RoleId == hrPositions.Id) on a.Id equals b.UserId + select a + ).ToList(); + + if (pltUsers == null || pltUsers.Count == 0) + { + result.Result = false; + result.Message = "鏈壘鍒板鐞嗕汉"; + return result; + } + + foreach (var pltUser in pltUsers) + { + //鎻掑叆鏂扮殑寰呭姙 + WfNeeddeelDTO wfNeeddeelDTO = new WfNeeddeelDTO(); + wfNeeddeelDTO.RunProcessId = wfRunProcessDTO.Id; + wfNeeddeelDTO.SendUserId = Userid; + wfNeeddeelDTO.DeelUserId = pltUser.Id; + wfNeeddeelDTO.Sendtime = DateTime.Now; + wfNeeddeelDTO.Resivetime = DateTime.Now; + wfNeeddeelDTO.Step = "浜轰簨瀹℃壒"; + wfNeeddeelDTO.NeeddeelType = "1"; + wfNeeddeelDTO.ChuliStatus = "0"; + wfNeeddeelDTO.Deelurl = "/Signin/AskLeave?id=" + DanjuId; + wfNeeddeelDTO.Content = ""; + wfNeeddeelDTO.Sort = 2; + wfNeeddeelDTO.RecStatus = "A"; + wfNeeddeelDTO.Creater = Userid; + wfNeeddeelDTO.Createtime = DateTime.Now; + wfNeeddeelDTO.Modifier = Userid; + wfNeeddeelDTO.Modifytime = wfNeeddeelDTO.Createtime; + result = _wfNeeddeelService.save(wfNeeddeelDTO); + if (result.Result == false) + { + return result; + } + } + } + + + + + } + if (step == "浜轰簨瀹℃壒") + { + //鏇存柊娴佺▼瀹炰緥 + //WfRunProcessDTO wfRunProcessDTO = this.GetList(DanjuId, "01").FirstOrDefault(); + if (wfRunProcessDTO == null) + { + result.Result = false; + result.Message = "鏈壘鍒版祦绋嬪疄渚�"; + return result; + } + if (wfRunProcessDTO.Step != "浜轰簨瀹℃壒") + { + result.Result = false; + result.Message = "褰撳墠姝ラ宸茬粡澶勭悊"; + return result; + } + + if (tongguojujue == "A") + { + wfRunProcessDTO.Step = "鎬荤粡鐞嗗鎵�"; + wfRunProcessDTO.Modifier = Userid; + wfRunProcessDTO.Modifytime = DateTime.Now; + result = this.save(wfRunProcessDTO); + if (result.Result == false) + { + return result; + } + + //鏇存柊寰呭姙 + List<WfNeeddeelDTO> wfNeeddeelDTOs = _wfNeeddeelService.GetList(wfRunProcessDTO.Id, "浜轰簨瀹℃壒"); + + + + var wfHistoryDTOs = _mapper.Map<List<WfHistoryDTO>>(wfNeeddeelDTOs); + + var wfHistoryDTO = wfHistoryDTOs.Where(x => x.DeelUserId == Userid).FirstOrDefault(); + if (wfHistoryDTO == null) + { + result.Result = false; + result.Message = "鏈壘鍒颁唬鍔�"; + return result; + } + + wfHistoryDTO.Content = Content; + wfHistoryDTO.ChuliStatus = "2"; + wfHistoryDTO.Modifier = Userid; + wfHistoryDTO.Modifytime = DateTime.Now; + + + var wfHistories = _mapper.Map<List<WfHistory>>(wfHistoryDTOs); + foreach (var wfHistory in wfHistories) + { + _context.WfHistories.Add(wfHistory); + } + var wfNeeddeels = _mapper.Map<List<WfNeeddeel>>(wfNeeddeelDTOs); + foreach (var wfNeeddeel in wfNeeddeels) + { + //_wfNeeddeelService.ModifyStatus(wfNeeddeel.Id, Userid); + _context.WfNeeddeels.Remove(wfNeeddeel); + } + _context.SaveChanges(); + + //鏌ヨ澶勭悊浜� + var hrPositions = _context.PltRoles.Where(x => x.RecStatus == "A" && x.RoleName == "鎬荤粡鐞�").FirstOrDefault(); + if (hrPositions == null) + { + result.Result = false; + result.Message = "鏈壘鍒拌亴浣�"; + return result; + } + var pltUsers = (from a in _context.PltUsers.Where(x => x.RecStatus == "A" && x.Zhiwustatus == "A") + join b in _context.PltUserRoles.Where(x => x.RecStatus == "A" && x.RoleId == hrPositions.Id) on a.Id equals b.UserId + select a + ).ToList(); + + if (pltUsers == null || pltUsers.Count == 0) + { + result.Result = false; + result.Message = "鏈壘鍒板鐞嗕汉"; + return result; + } + + foreach (var pltUser in pltUsers) + { + //鎻掑叆鏂扮殑寰呭姙 + WfNeeddeelDTO wfNeeddeelDTO = new WfNeeddeelDTO(); + wfNeeddeelDTO.RunProcessId = wfRunProcessDTO.Id; + wfNeeddeelDTO.SendUserId = Userid; + wfNeeddeelDTO.DeelUserId = pltUser.Id; + wfNeeddeelDTO.Sendtime = DateTime.Now; + wfNeeddeelDTO.Resivetime = DateTime.Now; + wfNeeddeelDTO.Step = "鎬荤粡鐞嗗鎵�"; + wfNeeddeelDTO.NeeddeelType = "1"; + wfNeeddeelDTO.ChuliStatus = "0"; + wfNeeddeelDTO.Deelurl = "/Signin/AskLeave?id=" + DanjuId; + wfNeeddeelDTO.Content = ""; + wfNeeddeelDTO.Sort = 3; + wfNeeddeelDTO.RecStatus = "A"; + wfNeeddeelDTO.Creater = Userid; + wfNeeddeelDTO.Createtime = DateTime.Now; + wfNeeddeelDTO.Modifier = Userid; + wfNeeddeelDTO.Modifytime = wfNeeddeelDTO.Createtime; + result = _wfNeeddeelService.save(wfNeeddeelDTO); + if (result.Result == false) + { + return result; + } + } + } + else + { + wfRunProcessDTO.Step = "鎻愪氦"; + wfRunProcessDTO.Modifier = Userid; + wfRunProcessDTO.Modifytime = DateTime.Now; + result = this.save(wfRunProcessDTO); + if (result.Result == false) + { + return result; + } + + //鏇存柊寰呭姙 + List<WfNeeddeelDTO> wfNeeddeelDTOs = _wfNeeddeelService.GetList(wfRunProcessDTO.Id, "浜轰簨瀹℃壒"); + var wfHistoryDTOs = _mapper.Map<List<WfHistoryDTO>>(wfNeeddeelDTOs); + + var wfHistoryDTO = wfHistoryDTOs.Where(x => x.DeelUserId == Userid).FirstOrDefault(); + if (wfHistoryDTO == null) + { + result.Result = false; + result.Message = "鏈壘鍒颁唬鍔�"; + return result; + } + wfHistoryDTO.Content = Content; + wfHistoryDTO.ChuliStatus = "1"; + wfHistoryDTO.Modifier = Userid; + wfHistoryDTO.Modifytime = DateTime.Now; + var wfHistories = _mapper.Map<List<WfHistory>>(wfHistoryDTOs); + foreach (var wfHistory in wfHistories) + { + _context.WfHistories.Add(wfHistory); + } + var wfNeeddeels = _mapper.Map<List<WfNeeddeel>>(wfNeeddeelDTOs); + foreach (var wfNeeddeel in wfNeeddeels) + { + //_wfNeeddeelService.ModifyStatus(wfNeeddeel.Id, Userid); + _context.WfNeeddeels.Remove(wfNeeddeel); + } + _context.SaveChanges(); + + + //鎻掑叆鏂扮殑寰呭姙 + WfNeeddeelDTO wfNeeddeelDTO = new WfNeeddeelDTO(); + wfNeeddeelDTO.RunProcessId = wfRunProcessDTO.Id; + wfNeeddeelDTO.SendUserId = Userid; + wfNeeddeelDTO.DeelUserId = wfRunProcessDTO.Creater; + wfNeeddeelDTO.Sendtime = DateTime.Now; + wfNeeddeelDTO.Resivetime = DateTime.Now; + wfNeeddeelDTO.Step = "鎻愪氦"; + wfNeeddeelDTO.NeeddeelType = "1"; + wfNeeddeelDTO.ChuliStatus = "0"; + wfNeeddeelDTO.Deelurl = "/Signin/AskLeave?id=" + DanjuId; + wfNeeddeelDTO.Content = ""; + wfNeeddeelDTO.Sort = 1; + wfNeeddeelDTO.RecStatus = "A"; + wfNeeddeelDTO.Creater = Userid; + wfNeeddeelDTO.Createtime = DateTime.Now; + wfNeeddeelDTO.Modifier = Userid; + wfNeeddeelDTO.Modifytime = wfNeeddeelDTO.Createtime; + result = _wfNeeddeelService.save(wfNeeddeelDTO); + if (result.Result == false) + { + return result; + } + + } + + + + + + } + + if (step == "鎬荤粡鐞嗗鎵�") + { + //鏇存柊娴佺▼瀹炰緥 + //WfRunProcessDTO wfRunProcessDTO = this.GetList(DanjuId, "01").FirstOrDefault(); + if (wfRunProcessDTO == null) + { + result.Result = false; + result.Message = "鏈壘鍒版祦绋嬪疄渚�"; + return result; + } + if (wfRunProcessDTO.Step != "鎬荤粡鐞嗗鎵�") + { + result.Result = false; + result.Message = "褰撳墠姝ラ宸茬粡澶勭悊"; + return result; + } + if (tongguojujue == "A") + { + + wfRunProcessDTO.Step = "瀹岀粨"; + wfRunProcessDTO.ShenpiStatus = "A"; + wfRunProcessDTO.Modifier = Userid; + wfRunProcessDTO.Modifytime = DateTime.Now; + result = this.save(wfRunProcessDTO); + if (result.Result == false) + { + return result; + } + //鏇存柊鍗曟嵁 + var askLeave = _context.AdmAskLeaves.Find(DanjuId); + if (wfRunProcessDTO == null) + { + result.Result = false; + result.Message = "鏈壘鍒板崟鎹�"; + return result; + } + askLeave.ShenpiStatus = "A"; + _context.SaveChanges(); + + List<WfNeeddeelDTO> wfNeeddeelDTOs = _wfNeeddeelService.GetList(wfRunProcessDTO.Id, "鎬荤粡鐞嗗鎵�"); + + var wfHistoryDTOs = _mapper.Map<List<WfHistoryDTO>>(wfNeeddeelDTOs); + + var wfHistoryDTO = wfHistoryDTOs.Where(x => x.DeelUserId == Userid).FirstOrDefault(); + if (wfHistoryDTO == null) + { + result.Result = false; + result.Message = "鏈壘鍒颁唬鍔�"; + return result; + } + wfHistoryDTO.Content = Content; + wfHistoryDTO.ChuliStatus = "2"; + wfHistoryDTO.Modifier = Userid; + wfHistoryDTO.Modifytime = DateTime.Now; + var wfHistories = _mapper.Map<List<WfHistory>>(wfHistoryDTOs); + foreach (var wfHistory in wfHistories) + { + _context.WfHistories.Add(wfHistory); + } + var wfNeeddeels = _mapper.Map<List<WfNeeddeel>>(wfNeeddeelDTOs); + foreach (var wfNeeddeel in wfNeeddeels) + { + // _wfNeeddeelService.ModifyStatus(wfNeeddeel.Id, Userid); + _context.WfNeeddeels.Remove(wfNeeddeel); + } + _context.SaveChanges(); + } + else + { + wfRunProcessDTO.Step = "鎻愪氦"; + wfRunProcessDTO.Modifier = Userid; + wfRunProcessDTO.Modifytime = DateTime.Now; + result = this.save(wfRunProcessDTO); + if (result.Result == false) + { + return result; + } + + //鏇存柊寰呭姙 + List<WfNeeddeelDTO> wfNeeddeelDTOs = _wfNeeddeelService.GetList(wfRunProcessDTO.Id, "鎬荤粡鐞嗗鎵�"); + var wfHistoryDTOs = _mapper.Map<List<WfHistoryDTO>>(wfNeeddeelDTOs); + + var wfHistoryDTO = wfHistoryDTOs.Where(x => x.DeelUserId == Userid).FirstOrDefault(); + if (wfHistoryDTO == null) + { + result.Result = false; + result.Message = "鏈壘鍒颁唬鍔�"; + return result; + } + wfHistoryDTO.Content = Content; + wfHistoryDTO.ChuliStatus = "1"; + wfHistoryDTO.Modifier = Userid; + wfHistoryDTO.Modifytime = DateTime.Now; + var wfHistories = _mapper.Map<List<WfHistory>>(wfHistoryDTOs); + foreach (var wfHistory in wfHistories) + { + _context.WfHistories.Add(wfHistory); + } + var wfNeeddeels = _mapper.Map<List<WfNeeddeel>>(wfNeeddeelDTOs); + foreach (var wfNeeddeel in wfNeeddeels) + { + //_wfNeeddeelService.ModifyStatus(wfNeeddeel.Id, Userid); + _context.WfNeeddeels.Remove(wfNeeddeel); + } + _context.SaveChanges(); + + + //鎻掑叆鏂扮殑寰呭姙 + WfNeeddeelDTO wfNeeddeelDTO = new WfNeeddeelDTO(); + wfNeeddeelDTO.RunProcessId = wfRunProcessDTO.Id; + wfNeeddeelDTO.SendUserId = Userid; + wfNeeddeelDTO.DeelUserId = wfRunProcessDTO.Creater; + wfNeeddeelDTO.Sendtime = DateTime.Now; + wfNeeddeelDTO.Resivetime = DateTime.Now; + wfNeeddeelDTO.Step = "鎻愪氦"; + wfNeeddeelDTO.NeeddeelType = "1"; + wfNeeddeelDTO.ChuliStatus = "0"; + wfNeeddeelDTO.Deelurl = "/Signin/AskLeave?id=" + DanjuId; + wfNeeddeelDTO.Content = ""; + wfNeeddeelDTO.Sort = 1; + wfNeeddeelDTO.RecStatus = "A"; + wfNeeddeelDTO.Creater = Userid; + wfNeeddeelDTO.Createtime = DateTime.Now; + wfNeeddeelDTO.Modifier = Userid; + wfNeeddeelDTO.Modifytime = wfNeeddeelDTO.Createtime; + result = _wfNeeddeelService.save(wfNeeddeelDTO); + if (result.Result == false) + { + return result; + } + + } + + + + } + + + } + + + + return result; + } + + public ResultEntity WfAskLeaveOff(string DanjuId, string step, string tongguojujue, string Userid, string Content, string title, string version) + { + + ResultEntity result = new ResultEntity(); + result.Result = true; + + + WfRunProcessDTO wfRunProcessDTO = this.GetList(DanjuId, "02").FirstOrDefault(); + if (wfRunProcessDTO != null) + { + version = wfRunProcessDTO.Version; + } + + + if (version == "v1") + { + if (step == "鎻愪氦") + { + //鏇存柊娴佺▼瀹炰緥 + // WfRunProcessDTO wfRunProcessDTO = this.GetList(DanjuId, "02").FirstOrDefault(); + if (wfRunProcessDTO == null) + { + //鎻掑叆娴佺▼瀹炰緥 + wfRunProcessDTO = new WfRunProcessDTO(); + //wfRunProcessDTO.Applyno = + wfRunProcessDTO.Applytime = DateTime.Now; + wfRunProcessDTO.Applytiye = "02"; + wfRunProcessDTO.DanjuId = DanjuId; + wfRunProcessDTO.Content = title; + wfRunProcessDTO.Step = "浜轰簨瀹℃壒"; + wfRunProcessDTO.ShenpiStatus = "D"; + wfRunProcessDTO.Version = version; + wfRunProcessDTO.RecStatus = "A"; + wfRunProcessDTO.Creater = Userid; + wfRunProcessDTO.Createtime = DateTime.Now; + wfRunProcessDTO.Modifier = Userid; + wfRunProcessDTO.Modifytime = DateTime.Now; + wfRunProcessDTO.Deelurl = "/Signin/AskLeaveOff?id=" + DanjuId; + result = this.save(wfRunProcessDTO); + if (result.Result == false) + { + return result; + } + //鏌ヨ澶勭悊浜� + var hrPositions = _context.PltRoles.Where(x => x.RecStatus == "A" && x.RoleName == "浜轰簨").FirstOrDefault(); + if (hrPositions == null) + { + result.Result = false; + result.Message = "鏈壘鍒拌亴浣�"; + return result; + } + var pltUsers = (from a in _context.PltUsers.Where(x => x.RecStatus == "A" && x.Zhiwustatus == "A") + join b in _context.PltUserRoles.Where(x => x.RecStatus == "A" && x.RoleId == hrPositions.Id) on a.Id equals b.UserId + select a + ).ToList(); + + if (pltUsers == null || pltUsers.Count == 0) + { + result.Result = false; + result.Message = "鏈壘鍒板鐞嗕汉"; + return result; + } + foreach (var pltUser in pltUsers) + { + //鎻掑叆寰呭姙 + WfNeeddeelDTO wfNeeddeelDTO = new WfNeeddeelDTO(); + wfNeeddeelDTO.RunProcessId = wfRunProcessDTO.Id; + wfNeeddeelDTO.SendUserId = Userid; + wfNeeddeelDTO.DeelUserId = pltUser.Id; + wfNeeddeelDTO.Sendtime = DateTime.Now; + wfNeeddeelDTO.Resivetime = DateTime.Now; + wfNeeddeelDTO.Step = "浜轰簨瀹℃壒"; + wfNeeddeelDTO.NeeddeelType = "1"; + wfNeeddeelDTO.ChuliStatus = "0"; + wfNeeddeelDTO.Deelurl = "/Signin/AskLeaveOff?id=" + DanjuId; + wfNeeddeelDTO.Content = ""; + wfNeeddeelDTO.Sort = 1; + wfNeeddeelDTO.RecStatus = "A"; + wfNeeddeelDTO.Creater = Userid; + wfNeeddeelDTO.Createtime = DateTime.Now; + wfNeeddeelDTO.Modifier = Userid; + wfNeeddeelDTO.Modifytime = wfNeeddeelDTO.Createtime; + result = _wfNeeddeelService.save(wfNeeddeelDTO); + if (result.Result == false) + { + return result; + } + } + + //鎻掑叆鏂扮殑宸插姙 + WfHistory wfHistoryDTO1 = new WfHistory(); + wfHistoryDTO1.Id = Guid.NewGuid().ToString(); + wfHistoryDTO1.RunProcessId = wfRunProcessDTO.Id; + wfHistoryDTO1.SendUserId = Userid; + wfHistoryDTO1.DeelUserId = wfRunProcessDTO.Creater; + wfHistoryDTO1.Sendtime = DateTime.Now; + wfHistoryDTO1.Resivetime = DateTime.Now; + wfHistoryDTO1.Step = "鎻愪氦"; + wfHistoryDTO1.NeeddeelType = "1"; + wfHistoryDTO1.ChuliStatus = "2"; + wfHistoryDTO1.Deelurl = "/Signin/AskLeaveOff?id=" + DanjuId; + wfHistoryDTO1.Content = ""; + wfHistoryDTO1.Sort = 1; + wfHistoryDTO1.RecStatus = "A"; + wfHistoryDTO1.Creater = Userid; + wfHistoryDTO1.Createtime = DateTime.Now; + wfHistoryDTO1.Modifier = Userid; + wfHistoryDTO1.Modifytime = wfHistoryDTO1.Createtime; + _context.WfHistories.Add(wfHistoryDTO1); + _context.SaveChanges(); + } + else + { + wfRunProcessDTO.Step = "浜轰簨瀹℃壒"; + wfRunProcessDTO.Modifier = Userid; + wfRunProcessDTO.Modifytime = DateTime.Now; + result = this.save(wfRunProcessDTO); + if (result.Result == false) + { + return result; + } + + //鏇存柊寰呭姙 + List<WfNeeddeelDTO> wfNeeddeelDTOs = _wfNeeddeelService.GetList(wfRunProcessDTO.Id, "鎻愪氦"); + var wfHistoryDTOs = _mapper.Map<List<WfHistoryDTO>>(wfNeeddeelDTOs); + + var wfHistoryDTO = wfHistoryDTOs.Where(x => x.DeelUserId == Userid).FirstOrDefault(); + if (wfHistoryDTO == null) + { + result.Result = false; + result.Message = "鏈壘鍒颁唬鍔�"; + return result; + } + wfHistoryDTO.Content = Content; + wfHistoryDTO.ChuliStatus = "2"; + wfHistoryDTO.Modifier = Userid; + wfHistoryDTO.Modifytime = DateTime.Now; + var wfHistories = _mapper.Map<List<WfHistory>>(wfHistoryDTOs); + foreach (var wfHistory in wfHistories) + { + _context.WfHistories.Add(wfHistory); + } + var wfNeeddeels = _mapper.Map<List<WfNeeddeel>>(wfNeeddeelDTOs); + foreach (var wfNeeddeel in wfNeeddeels) + { + //_wfNeeddeelService.ModifyStatus(wfNeeddeel.Id, Userid); + _context.WfNeeddeels.Remove(wfNeeddeel); + } + _context.SaveChanges(); + + //鏌ヨ澶勭悊浜� + var hrPositions = _context.PltRoles.Where(x => x.RecStatus == "A" && x.RoleName == "浜轰簨").FirstOrDefault(); + if (hrPositions == null) + { + result.Result = false; + result.Message = "鏈壘鍒拌亴浣�"; + return result; + } + var pltUsers = (from a in _context.PltUsers.Where(x => x.RecStatus == "A" && x.Zhiwustatus == "A") + join b in _context.PltUserRoles.Where(x => x.RecStatus == "A" && x.RoleId == hrPositions.Id) on a.Id equals b.UserId + select a + ).ToList(); + + if (pltUsers == null || pltUsers.Count == 0) + { + result.Result = false; + result.Message = "鏈壘鍒板鐞嗕汉"; + return result; + } + + foreach (var pltUser in pltUsers) + { + //鎻掑叆鏂扮殑寰呭姙 + WfNeeddeelDTO wfNeeddeelDTO = new WfNeeddeelDTO(); + wfNeeddeelDTO.RunProcessId = wfRunProcessDTO.Id; + wfNeeddeelDTO.SendUserId = Userid; + wfNeeddeelDTO.DeelUserId = pltUser.Id; + wfNeeddeelDTO.Sendtime = DateTime.Now; + wfNeeddeelDTO.Resivetime = DateTime.Now; + wfNeeddeelDTO.Step = "浜轰簨瀹℃壒"; + wfNeeddeelDTO.NeeddeelType = "1"; + wfNeeddeelDTO.ChuliStatus = "0"; + wfNeeddeelDTO.Deelurl = "/Signin/AskLeaveOff?id=" + DanjuId; + wfNeeddeelDTO.Content = ""; + wfNeeddeelDTO.Sort = 2; + wfNeeddeelDTO.RecStatus = "A"; + wfNeeddeelDTO.Creater = Userid; + wfNeeddeelDTO.Createtime = DateTime.Now; + wfNeeddeelDTO.Modifier = Userid; + wfNeeddeelDTO.Modifytime = wfNeeddeelDTO.Createtime; + result = _wfNeeddeelService.save(wfNeeddeelDTO); + if (result.Result == false) + { + return result; + } + } + } + + + + + } + if (step == "浜轰簨瀹℃壒") + { + //鏇存柊娴佺▼瀹炰緥 + //WfRunProcessDTO wfRunProcessDTO = this.GetList(DanjuId, "02").FirstOrDefault(); + if (wfRunProcessDTO == null) + { + result.Result = false; + result.Message = "鏈壘鍒版祦绋嬪疄渚�"; + return result; + } + if (wfRunProcessDTO.Step != "浜轰簨瀹℃壒") + { + result.Result = false; + result.Message = "褰撳墠姝ラ宸茬粡澶勭悊"; + return result; + } + + if (tongguojujue == "A") + { + wfRunProcessDTO.Step = "鎬荤粡鐞嗗鎵�"; + wfRunProcessDTO.Modifier = Userid; + wfRunProcessDTO.Modifytime = DateTime.Now; + result = this.save(wfRunProcessDTO); + if (result.Result == false) + { + return result; + } + + //鏇存柊寰呭姙 + List<WfNeeddeelDTO> wfNeeddeelDTOs = _wfNeeddeelService.GetList(wfRunProcessDTO.Id, "浜轰簨瀹℃壒"); + + + + var wfHistoryDTOs = _mapper.Map<List<WfHistoryDTO>>(wfNeeddeelDTOs); + + var wfHistoryDTO = wfHistoryDTOs.Where(x => x.DeelUserId == Userid).FirstOrDefault(); + if (wfHistoryDTO == null) + { + result.Result = false; + result.Message = "鏈壘鍒颁唬鍔�"; + return result; + } + + wfHistoryDTO.Content = Content; + wfHistoryDTO.ChuliStatus = "2"; + wfHistoryDTO.Modifier = Userid; + wfHistoryDTO.Modifytime = DateTime.Now; + + + var wfHistories = _mapper.Map<List<WfHistory>>(wfHistoryDTOs); + foreach (var wfHistory in wfHistories) + { + _context.WfHistories.Add(wfHistory); + } + var wfNeeddeels = _mapper.Map<List<WfNeeddeel>>(wfNeeddeelDTOs); + foreach (var wfNeeddeel in wfNeeddeels) + { + //_wfNeeddeelService.ModifyStatus(wfNeeddeel.Id, Userid); + _context.WfNeeddeels.Remove(wfNeeddeel); + } + _context.SaveChanges(); + + //鏌ヨ澶勭悊浜� + var hrPositions = _context.PltRoles.Where(x => x.RecStatus == "A" && x.RoleName == "鎬荤粡鐞�").FirstOrDefault(); + if (hrPositions == null) + { + result.Result = false; + result.Message = "鏈壘鍒拌亴浣�"; + return result; + } + var pltUsers = (from a in _context.PltUsers.Where(x => x.RecStatus == "A" && x.Zhiwustatus == "A") + join b in _context.PltUserRoles.Where(x => x.RecStatus == "A" && x.RoleId == hrPositions.Id) on a.Id equals b.UserId + select a + ).ToList(); + + if (pltUsers == null || pltUsers.Count == 0) + { + result.Result = false; + result.Message = "鏈壘鍒板鐞嗕汉"; + return result; + } + + foreach (var pltUser in pltUsers) + { + //鎻掑叆鏂扮殑寰呭姙 + WfNeeddeelDTO wfNeeddeelDTO = new WfNeeddeelDTO(); + wfNeeddeelDTO.RunProcessId = wfRunProcessDTO.Id; + wfNeeddeelDTO.SendUserId = Userid; + wfNeeddeelDTO.DeelUserId = pltUser.Id; + wfNeeddeelDTO.Sendtime = DateTime.Now; + wfNeeddeelDTO.Resivetime = DateTime.Now; + wfNeeddeelDTO.Step = "鎬荤粡鐞嗗鎵�"; + wfNeeddeelDTO.NeeddeelType = "1"; + wfNeeddeelDTO.ChuliStatus = "0"; + wfNeeddeelDTO.Deelurl = "/Signin/AskLeaveOff?id=" + DanjuId; + wfNeeddeelDTO.Content = ""; + wfNeeddeelDTO.Sort = 3; + wfNeeddeelDTO.RecStatus = "A"; + wfNeeddeelDTO.Creater = Userid; + wfNeeddeelDTO.Createtime = DateTime.Now; + wfNeeddeelDTO.Modifier = Userid; + wfNeeddeelDTO.Modifytime = wfNeeddeelDTO.Createtime; + result = _wfNeeddeelService.save(wfNeeddeelDTO); + if (result.Result == false) + { + return result; + } + } + } + else + { + wfRunProcessDTO.Step = "鎻愪氦"; + wfRunProcessDTO.Modifier = Userid; + wfRunProcessDTO.Modifytime = DateTime.Now; + result = this.save(wfRunProcessDTO); + if (result.Result == false) + { + return result; + } + + //鏇存柊寰呭姙 + List<WfNeeddeelDTO> wfNeeddeelDTOs = _wfNeeddeelService.GetList(wfRunProcessDTO.Id, "浜轰簨瀹℃壒"); + var wfHistoryDTOs = _mapper.Map<List<WfHistoryDTO>>(wfNeeddeelDTOs); + + var wfHistoryDTO = wfHistoryDTOs.Where(x => x.DeelUserId == Userid).FirstOrDefault(); + if (wfHistoryDTO == null) + { + result.Result = false; + result.Message = "鏈壘鍒颁唬鍔�"; + return result; + } + wfHistoryDTO.Content = Content; + wfHistoryDTO.ChuliStatus = "1"; + wfHistoryDTO.Modifier = Userid; + wfHistoryDTO.Modifytime = DateTime.Now; + var wfHistories = _mapper.Map<List<WfHistory>>(wfHistoryDTOs); + foreach (var wfHistory in wfHistories) + { + _context.WfHistories.Add(wfHistory); + } + var wfNeeddeels = _mapper.Map<List<WfNeeddeel>>(wfNeeddeelDTOs); + foreach (var wfNeeddeel in wfNeeddeels) + { + //_wfNeeddeelService.ModifyStatus(wfNeeddeel.Id, Userid); + _context.WfNeeddeels.Remove(wfNeeddeel); + } + _context.SaveChanges(); + + + //鎻掑叆鏂扮殑寰呭姙 + WfNeeddeelDTO wfNeeddeelDTO = new WfNeeddeelDTO(); + wfNeeddeelDTO.RunProcessId = wfRunProcessDTO.Id; + wfNeeddeelDTO.SendUserId = Userid; + wfNeeddeelDTO.DeelUserId = wfRunProcessDTO.Creater; + wfNeeddeelDTO.Sendtime = DateTime.Now; + wfNeeddeelDTO.Resivetime = DateTime.Now; + wfNeeddeelDTO.Step = "鎻愪氦"; + wfNeeddeelDTO.NeeddeelType = "1"; + wfNeeddeelDTO.ChuliStatus = "0"; + wfNeeddeelDTO.Deelurl = "/Signin/AskLeaveOff?id=" + DanjuId; + wfNeeddeelDTO.Content = ""; + wfNeeddeelDTO.Sort = 1; + wfNeeddeelDTO.RecStatus = "A"; + wfNeeddeelDTO.Creater = Userid; + wfNeeddeelDTO.Createtime = DateTime.Now; + wfNeeddeelDTO.Modifier = Userid; + wfNeeddeelDTO.Modifytime = wfNeeddeelDTO.Createtime; + result = _wfNeeddeelService.save(wfNeeddeelDTO); + if (result.Result == false) + { + return result; + } + + } + + + + + + } + + if (step == "鎬荤粡鐞嗗鎵�") + { + //鏇存柊娴佺▼瀹炰緥 + //WfRunProcessDTO wfRunProcessDTO = this.GetList(DanjuId, "02").FirstOrDefault(); + if (wfRunProcessDTO == null) + { + result.Result = false; + result.Message = "鏈壘鍒版祦绋嬪疄渚�"; + return result; + } + if (wfRunProcessDTO.Step != "鎬荤粡鐞嗗鎵�") + { + result.Result = false; + result.Message = "褰撳墠姝ラ宸茬粡澶勭悊"; + return result; + } + if (tongguojujue == "A") + { + + wfRunProcessDTO.Step = "瀹岀粨"; + wfRunProcessDTO.ShenpiStatus = "A"; + wfRunProcessDTO.Modifier = Userid; + wfRunProcessDTO.Modifytime = DateTime.Now; + result = this.save(wfRunProcessDTO); + if (result.Result == false) + { + return result; + } + //鏇存柊鍗曟嵁 + var askLeaveOff = _context.AdmAskLeaveOffs.Find(DanjuId); + if (wfRunProcessDTO == null) + { + result.Result = false; + result.Message = "鏈壘鍒板崟鎹�"; + return result; + } + askLeaveOff.ShenpiStatus = "A"; + _context.SaveChanges(); + + List<WfNeeddeelDTO> wfNeeddeelDTOs = _wfNeeddeelService.GetList(wfRunProcessDTO.Id, "鎬荤粡鐞嗗鎵�"); + + var wfHistoryDTOs = _mapper.Map<List<WfHistoryDTO>>(wfNeeddeelDTOs); + + var wfHistoryDTO = wfHistoryDTOs.Where(x => x.DeelUserId == Userid).FirstOrDefault(); + if (wfHistoryDTO == null) + { + result.Result = false; + result.Message = "鏈壘鍒颁唬鍔�"; + return result; + } + wfHistoryDTO.Content = Content; + wfHistoryDTO.ChuliStatus = "2"; + wfHistoryDTO.Modifier = Userid; + wfHistoryDTO.Modifytime = DateTime.Now; + var wfHistories = _mapper.Map<List<WfHistory>>(wfHistoryDTOs); + foreach (var wfHistory in wfHistories) + { + _context.WfHistories.Add(wfHistory); + } + var wfNeeddeels = _mapper.Map<List<WfNeeddeel>>(wfNeeddeelDTOs); + foreach (var wfNeeddeel in wfNeeddeels) + { + // _wfNeeddeelService.ModifyStatus(wfNeeddeel.Id, Userid); + _context.WfNeeddeels.Remove(wfNeeddeel); + } + _context.SaveChanges(); + } + else + { + wfRunProcessDTO.Step = "鎻愪氦"; + wfRunProcessDTO.Modifier = Userid; + wfRunProcessDTO.Modifytime = DateTime.Now; + result = this.save(wfRunProcessDTO); + if (result.Result == false) + { + return result; + } + + //鏇存柊寰呭姙 + List<WfNeeddeelDTO> wfNeeddeelDTOs = _wfNeeddeelService.GetList(wfRunProcessDTO.Id, "鎬荤粡鐞嗗鎵�"); + var wfHistoryDTOs = _mapper.Map<List<WfHistoryDTO>>(wfNeeddeelDTOs); + + var wfHistoryDTO = wfHistoryDTOs.Where(x => x.DeelUserId == Userid).FirstOrDefault(); + if (wfHistoryDTO == null) + { + result.Result = false; + result.Message = "鏈壘鍒颁唬鍔�"; + return result; + } + wfHistoryDTO.Content = Content; + wfHistoryDTO.ChuliStatus = "1"; + wfHistoryDTO.Modifier = Userid; + wfHistoryDTO.Modifytime = DateTime.Now; + var wfHistories = _mapper.Map<List<WfHistory>>(wfHistoryDTOs); + foreach (var wfHistory in wfHistories) + { + _context.WfHistories.Add(wfHistory); + } + var wfNeeddeels = _mapper.Map<List<WfNeeddeel>>(wfNeeddeelDTOs); + foreach (var wfNeeddeel in wfNeeddeels) + { + //_wfNeeddeelService.ModifyStatus(wfNeeddeel.Id, Userid); + _context.WfNeeddeels.Remove(wfNeeddeel); + } + _context.SaveChanges(); + + + //鎻掑叆鏂扮殑寰呭姙 + WfNeeddeelDTO wfNeeddeelDTO = new WfNeeddeelDTO(); + wfNeeddeelDTO.RunProcessId = wfRunProcessDTO.Id; + wfNeeddeelDTO.SendUserId = Userid; + wfNeeddeelDTO.DeelUserId = wfRunProcessDTO.Creater; + wfNeeddeelDTO.Sendtime = DateTime.Now; + wfNeeddeelDTO.Resivetime = DateTime.Now; + wfNeeddeelDTO.Step = "鎻愪氦"; + wfNeeddeelDTO.NeeddeelType = "1"; + wfNeeddeelDTO.ChuliStatus = "0"; + wfNeeddeelDTO.Deelurl = "/Signin/askLeaveOff?id=" + DanjuId; + wfNeeddeelDTO.Content = ""; + wfNeeddeelDTO.Sort = 1; + wfNeeddeelDTO.RecStatus = "A"; + wfNeeddeelDTO.Creater = Userid; + wfNeeddeelDTO.Createtime = DateTime.Now; + wfNeeddeelDTO.Modifier = Userid; + wfNeeddeelDTO.Modifytime = wfNeeddeelDTO.Createtime; + result = _wfNeeddeelService.save(wfNeeddeelDTO); + if (result.Result == false) + { + return result; + } + + } + + + + } + + + } + + + + return result; + } } } -- Gitblit v1.9.1