username@email.com
2021-08-27 7b9e068cfe4e295f9ee960457d848c631f0136c7
zhengcaioa/Services/WfRunProcessService.cs
@@ -6973,5 +6973,370 @@
            return result;
        }
        public ResultEntity WfAskJiaojie(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, "22").FirstOrDefault();
            if (wfRunProcessDTO != null)
            {
                version = wfRunProcessDTO.Version;
            }
            if (version == "v1")
            {
                if (step == "保存")
                {
                    //更新流程实例
                    // WfRunProcessDTO wfRunProcessDTO = this.GetList(DanjuId, "22").FirstOrDefault();
                    if (wfRunProcessDTO == null)
                    {
                        //插入流程实例
                        wfRunProcessDTO = new WfRunProcessDTO();
                        //wfRunProcessDTO.Applyno =
                        wfRunProcessDTO.Applytime = DateTime.Now;
                        wfRunProcessDTO.Applytiye = "22";
                        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 = "/AdmAsk/AskJiaojie?id=" + DanjuId+ "&JiaojieStatus=D";
                        result = this.save(wfRunProcessDTO);
                        if (result.Result == false)
                        {
                            return result;
                        }
                        //查询处理人
                        var pltUsers = _context.PltUsers.Where(x => x.RecStatus == "A" && x.Zhiwustatus == "A" && x.Id == Userid).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 = "/AdmAsk/AskJiaojie?id=" + DanjuId + "&JiaojieStatus=D";
                            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;
                            }
                        }
                        _context.SaveChanges();
                    }
                }
                if (step == "提交")
                {
                    //更新流程实例
                    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 pltUsers = new List<PltUser>();
                    //查询处理人角色
                    var hrPositions = _context.PltRoles.Where(x => x.RecStatus == "A" && (x.RoleName == "财务" || x.RoleName == "人事" || x.RoleName == "行政" || x.RoleName == "总经理")).Select(x=>x.Id).ToList();
                    if (hrPositions == null || hrPositions.Count == 0)
                    {
                        result.Result = false;
                        result.Message = "未找到职位";
                        return result;
                    }
                    var pltUsersrole = (from a in _context.PltUsers.Where(x => x.RecStatus == "A" && x.Zhiwustatus == "A")
                                    join b in _context.PltUserRoles.Where(x => x.RecStatus == "A" && hrPositions.Contains(x.RoleId)) on a.Id equals b.UserId
                                    select a
                                    ).ToList();
                    foreach (var pltUser1 in pltUsersrole)
                    {
                        pltUsers.Add(pltUser1);
                    }
                    //查询处理人主管
                    var user = _context.PltUsers.Find(Userid);
                    var hrDept = _context.HrDepts.Where(x => x.RecStatus == "A" && x.Id == user.DeptId).FirstOrDefault();
                    if (hrDept == null)
                    {
                        result.Result = false;
                        result.Message = "未找到部门";
                        return result;
                    }
                    var pltUserszhuguan = _context.PltUsers.Where(x => x.RecStatus == "A" && x.Zhiwustatus == "A" && x.Id == hrDept.Director).ToList();
                    foreach (var pltUser1 in pltUserszhuguan)
                    {
                        pltUsers.Add(pltUser1);
                    }
                    //查询处理人交接
                    var admAskJiaojie = _context.AdmAskJiaojies.Find(DanjuId);
                    if (admAskJiaojie != null)
                    {
                        var admAskCiZhi = _context.AdmAskCiZhis.Find(admAskJiaojie.CiZhiId);
                        if (admAskCiZhi != null)
                        {
                            var JiaojieUser = admAskCiZhi.JiaojieUser.Split(',');
                            if (JiaojieUser.Length > 0)
                            {
                                var pltUsersJiaojie = _context.PltUsers.Where(x => x.RecStatus == "A" && x.Zhiwustatus == "A" && JiaojieUser.Contains(x.Id)).ToList();
                                foreach (var pltUser1 in pltUsersJiaojie)
                                {
                                    pltUsers.Add(pltUser1);
                                }
                            }
                        }
                    }
                    pltUsers = pltUsers.Distinct().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 = "/AdmAsk/AskJiaojie?id=" + DanjuId + "&JiaojieStatus=D";
                        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, "22").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 admAskJiaojie = _context.AdmAskJiaojies.Find(DanjuId);
                        if (wfRunProcessDTO == null)
                        {
                            result.Result = false;
                            result.Message = "未找到单据";
                            return result;
                        }
                        admAskJiaojie.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 = "/AdmAsk/AskJiaojie?id=" + DanjuId + "&JiaojieStatus=D";
                        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;
        }
    }
}