/// <summary> /// 更新实例步骤表{实例步骤表}对象(即:一条记录 /// </summary> public int Update(InstanceStep instanceStep) { using (var dbContext = UnitOfWork.Get(Unity.ContainerName)) { return(new InstanceStepRepository(dbContext).Update(instanceStep)); } }
/// <summary> /// 检查通过情况下一步处理人是否填写 /// </summary> /// <param name="AStepEntity">步骤实例</param> /// <param name="ATempStep">模板步骤实例</param> /// <returns></returns> private R <string> CheckFixNextUser(DealStepDTO dto, InstanceStep AStepEntity, TemplateStep ATempStep) { R <string> vResMsg = new R <string>(); vResMsg.Code = 1; //要求必须填写,但却未填写 if (ATempStep.IsFormNextman && ATempStep.IsFormNextmanMust && AStepEntity.InstanceStepNextSelusers.Count > 0) { if (dto.NextUserList == null || dto.NextUserList.Count <= 0) { vResMsg.Msg = "未接收到流程要求选择的下一步处理人!"; return(vResMsg); } } //要求非必填,但却填写了的 if (ATempStep.IsFormNextman && !ATempStep.IsFormNextmanMust && AStepEntity.InstanceStepNextSelusers.Count > 0 && dto.NextUserList != null && dto.NextUserList.Count > 0) { var vItems = from USERINFO vSupplyUser in dto.NextUserList where !AStepEntity.InstanceStepNextSelusers.Exists(AItem => AItem.UserCode.Equals(vSupplyUser.UserCode)) select vSupplyUser.UserCode; if (vItems.Any()) { vResMsg.Msg = string.Format("接收到下一步处理人与流程要求选择的不符(如:{0})!", vItems.FirstOrDefault()); return(vResMsg); } } vResMsg.Code = 0; return(vResMsg); }
private R <string> ValidateDealStep(DealStepDTO dto, InstanceStepDTO AInstanceStep) { R <string> vResMsg = new R <string>(); vResMsg.Code = 1; InstanceFlow vFlowEntity = AInstanceStep.InstanceFlow; InstanceStep vStepEntity = AInstanceStep.InstanceStep; TemplateFlow vTempFlow = AInstanceStep.TemplateFlow; TemplateStep vTempStep = AInstanceStep.TemplateStep; //检查工作组是否正确 if (!vFlowEntity.GroupId.Equals(dto.GroupID)) { vResMsg.Msg = "流程实例与用户的工作组不匹配!"; return(vResMsg); } //检查流程实例状态是否合适 if (new int[] { 4, 5, 6 }.Contains(vFlowEntity.Status) || new int[] { 4, 5, 6, 7 }.Contains(vStepEntity.Status) || !vStepEntity.Progress.Equals(7)) { vResMsg.Msg = "流程实例的当前状态不适合完成此操作!"; return(vResMsg); } //检查用户是否合法 InstanceStepUser vStepUser = (from InstanceStepUser vItem in vStepEntity.InstanceStepUsers where vItem.UserCode.Equals(dto.UserCode) select vItem).FirstOrDefault(); if (vStepUser == null) { vResMsg.Msg = "当前用户没有操作权限!"; return(vResMsg); } //处理方式与身份是否匹配 if (vStepUser.UserType.Equals(3) && !dto.Status.Equals(5)) { vResMsg.Msg = "当前操作超过了用户的权限!"; return(vResMsg); } //用户是否已提交 if (new int[] { 1, 2, 3, 4 }.Contains(vStepUser.Status)) { vResMsg.Msg = "当前步骤的操作已完成!"; return(vResMsg); } //检查处理意见 if (new int[] { 1, 2, 4 }.Contains(dto.Status) && vTempStep.IsFormSuggestion && string.IsNullOrWhiteSpace(dto.Content)) { vResMsg.Msg = "未接收到流程要求填写的主办或汇签意见!"; return(vResMsg); } //检查退回步骤设置 if (dto.Status.Equals(2)) { vResMsg = CheckReturnStepItem(dto, AInstanceStep); if (vResMsg.Code == 1) { return(vResMsg); } } else if (dto.Status.Equals(1)) { //检查跳转步骤设置 vResMsg = CheckTransferStepItem(dto, vStepEntity, vTempStep); if (vResMsg.Code == 1) { return(vResMsg); } //检查下一步处理人是否填写正确 if (!vResMsg.Data.Equals("HasCheckUser")) { vResMsg = CheckFixNextUser(dto, vStepEntity, vTempStep); if (vResMsg.Code == 1) { return(vResMsg); } } } vResMsg.Code = 0; return(vResMsg); }
/// <summary> /// 检查通过情况下跳转步骤设置 /// </summary> /// <param name="dto">步骤信息</param> /// <param name="AStepEntity">步骤实例</param> /// <param name="ATempStep">模板步骤实例</param> /// <returns></returns> private R <string> CheckTransferStepItem(DealStepDTO dto, InstanceStep AStepEntity, TemplateStep ATempStep) { R <string> vResMsg = new R <string>(); //不可填写的,但却填写了的 if ((!ATempStep.IsFormNextstep || ATempStep.IsFormNextstep && ATempStep.TemplateStepFixstepLists.Count <= 0) && !string.IsNullOrWhiteSpace(dto.NextStepSeq)) { vResMsg.Msg = "流程没有要求选择的下一个处理步骤,但此处却填写了!"; return(vResMsg); } //要求必须填写的,但却没有填写的 if (ATempStep.IsFormNextstep && ATempStep.IsFormNextstepMust && ATempStep.TemplateStepFixstepLists.Count > 0) { if (string.IsNullOrWhiteSpace(dto.NextStepSeq)) { vResMsg.Msg = "未接收到流程要求选择的下一个处理步骤!"; return(vResMsg); } } //填写过的 if (!string.IsNullOrWhiteSpace(dto.NextStepSeq)) { TemplateStepFixstepList vFindTempFixStep = (from TemplateStepFixstepList vItem in ATempStep.TemplateStepFixstepLists where !vItem.IsReturn && vItem.SelectStepSeq.ToString().Equals(dto.NextStepSeq) select vItem).FirstOrDefault(); if (vFindTempFixStep == null) { vResMsg.Msg = "接收到的下一个处理步骤与流程要求的跳转步骤不符!"; return(vResMsg); } //检查跳转下的处理人 var vList = from InstanceStepFixSeluser vFixUser in AStepEntity.InstanceStepFixSelusers where vFixUser.FixstepId.Equals(vFindTempFixStep.Fid) select vFixUser; //必须填写处理人但却没有填写的 if (vFindTempFixStep.IsFormNextman && vFindTempFixStep.IsFormNextmanMust && vList.Any()) { if (dto.NextUserList == null || dto.NextUserList.Count <= 0) { vResMsg.Msg = "未接收到流程要求选择的下一步处理人!"; return(vResMsg); } } //可以填写处理人,且已填写了处理人的 if (vFindTempFixStep.IsFormNextman && vList.Any() && dto.NextUserList != null && dto.NextUserList.Count > 0) { List <InstanceStepFixSeluser> vNewLsit = vList.ToList(); var vItems = from USERINFO vSupplyUser in dto.NextUserList where !vNewLsit.Exists(AItem => AItem.UserCode.Equals(vSupplyUser.UserCode)) select vSupplyUser.UserCode; if (vItems.Any()) { vResMsg.Msg = string.Format("接收到下一步处理人与流程要求选择的不符(如:{0})!", vItems.FirstOrDefault()); return(vResMsg); } vResMsg.Data = "HasCheckUser"; } } vResMsg.Code = 0; return(vResMsg); }
/// <summary> /// 更新实例步骤表{实例步骤表}对象(即:一条记录 /// </summary> public int Update(InstanceStep instanceStep) { return(Update <InstanceStep>(instanceStep)); }
/// <summary> /// 添加实例步骤表{实例步骤表}对象(即:一条记录 /// </summary> public long Add(InstanceStep instanceStep) { return(Add <InstanceStep>(instanceStep)); }