public static WorkflowValidation Build(WorkFlowNode node) { switch (node) { case WorkFlowNode.Begin: return new WorkflowSbValidation(); case WorkFlowNode.TB: return new WorkflowSbValidation(); case WorkFlowNode.KY: return new WorkflowKyvalidation(); case WorkFlowNode.GHSJYS: return new WorkflowGhvalidation(); case WorkFlowNode.YSTZ: return new WorkflowYsTzvalidation(); case WorkFlowNode.ShiShi: return new WorkflowSsValidation(); case WorkFlowNode.JunGong: return new WorkflowJgValidation(); case WorkFlowNode.ChuYan: return new WorkflowCyValidation(); case WorkFlowNode.ZhongYan: return new WorkflowZyValidation(); case WorkFlowNode.JueSuan: return new WorkflowJsValidation(); case WorkFlowNode.GuiDang: return new WorkflowGdValidation(); default: throw new Exception("未找到验证类。节点ID:" + node); } }
public bool DelYsxx(string itemCode, WorkFlowNode ysType) { ArrayList sqls = new ArrayList(); string tmpSql; Dictionary <string, string> delCondition = new Dictionary <string, string>(); delCondition.Clear(); delCondition.Add("itemcode", itemCode); sqls.Add(SqlBuilder.BuildDeleteSql <Xm_Ysxx>(delCondition)); delCondition.Clear(); delCondition.Add("itemcode", itemCode); delCondition.Add("xh", "1"); delCondition.Add("stage", ((int)ItemStage.YanShou).ToString()); sqls.Add(SqlBuilder.BuildDeleteSql <Xm_Gcxx>(delCondition)); //清空项目所有的文件。 tmpSql = "delete from item_file where itemcode = '{0}' and nodeid = '{1}'"; tmpSql = string.Format(tmpSql, itemCode, (int)ysType); sqls.Add(tmpSql); if (ysType == WorkFlowNode.ChuYan) { //清空项目所有的文件。 tmpSql = "delete from item_file where itemcode = '{0}' and nodeid = '{1}' and filecode not in ('24','25','26')"; tmpSql = string.Format(tmpSql, itemCode, (int)WorkFlowNode.JunGong); sqls.Add(tmpSql); } return(OracleHelper.ExecuteCommand(sqls)); }
protected string MoneyValidation(string itemCode, string dispalyName, WorkFlowNode node, int xh) { StringBuilder sb = new StringBuilder(); DataTable dtMoney = new BusiItemManage().GetItemMoneyDt(itemCode, (int)node, xh.ToString()); AppendErrorMessage(sb, dtOperation.RowNullCheck(dtMoney, dispalyName, NotNullFormat)); condition.Clear(); condition.Add("ZJZE", dispalyName); AppendErrorMessage(sb, dtOperation.ColumnNullCheck(dtMoney, condition, NotNullFormat)); if (dtMoney.Rows.Count > 0) { if (FormatMoney(dtMoney.Rows[0]["ZJZE"].ToString()) != FormatMoney(dtMoney.Rows[0]["fee1"].ToString()) + FormatMoney(dtMoney.Rows[0]["fee2"].ToString()) + FormatMoney(dtMoney.Rows[0]["fee3"].ToString()) + FormatMoney(dtMoney.Rows[0]["fee4"].ToString()) + FormatMoney(dtMoney.Rows[0]["fee5"].ToString()) + FormatMoney(dtMoney.Rows[0]["fee6"].ToString()) + FormatMoney(dtMoney.Rows[0]["fee7"].ToString()) + FormatMoney(dtMoney.Rows[0]["fee8"].ToString())) { AppendErrorMessage(sb, "资金总额与来源情况不相符!"); } if (FormatMoney(dtMoney.Rows[0]["ZJZE"].ToString()) != FormatMoney(dtMoney.Rows[0]["sbgzf"].ToString()) + FormatMoney(dtMoney.Rows[0]["tdpzgcf"].ToString()) + FormatMoney(dtMoney.Rows[0]["ntslgcf"].ToString()) + FormatMoney(dtMoney.Rows[0]["dlgcf"].ToString()) + FormatMoney(dtMoney.Rows[0]["qtgcf"].ToString()) + FormatMoney(dtMoney.Rows[0]["bkyjf"].ToString()) + FormatMoney(dtMoney.Rows[0]["qtfy"].ToString())) { AppendErrorMessage(sb, "资金总额与使用情况不相符!"); } } return(sb.ToString()); }
public void UpdateYsxx(Xm_Ysxx ysxx, WorkFlowNode node, ref ArrayList strSql) { string tmpSql = string.Empty; if (node == WorkFlowNode.JunGong) { tmpSql = "delete from xm_ysxx where Itemcode = {0}"; tmpSql = string.Format(tmpSql, ysxx.ITEMCODE); strSql.Add(tmpSql); tmpSql = "Insert Into xm_ysxx (itemCode,Yssqsj,Yssqdw) values ({0},to_date('{1}','yyyy-mm-dd'),'{2}')"; tmpSql = string.Format(tmpSql, ysxx.ITEMCODE, ysxx.YSSQSJ.Value.ToString("yyyy-MM-dd"), ysxx.YSSQDW); strSql.Add(tmpSql); } if (node == WorkFlowNode.ChuYan) { tmpSql = "Update xm_ysxx set cydw = '{1}', cysj = to_date('{2}','yyyy-mm-dd') Where ItemCode = {0}"; tmpSql = string.Format(tmpSql, ysxx.ITEMCODE, ysxx.CYDW, ysxx.CYSJ.Value.ToString("yyyy-MM-dd")); strSql.Add(tmpSql); } if (node == WorkFlowNode.ZhongYan) { tmpSql = "Update xm_ysxx set zydw = '{1}', zysj = to_date('{2}','yyyy-mm-dd'),yswh = '{3}',jsfhsj = to_date('{4}','yyyy-mm-dd') Where ItemCode = {0}"; tmpSql = string.Format(tmpSql, ysxx.ITEMCODE, ysxx.ZYDW, ysxx.ZYSJ.Value.ToString("yyyy-MM-dd"), ysxx.YSWH, ysxx.JSFHSJ.Value.ToString("yyyy-MM-dd")); strSql.Add(tmpSql); tmpSql = "update xm_xmxx set YSSJ = to_date('{1}','yyyy-mm-dd') where ITEMCODE = '{0}'"; tmpSql = string.Format(tmpSql, ysxx.ITEMCODE, ysxx.ZYSJ.Value.ToString("yyyy-MM-dd")); strSql.Add(tmpSql); } }
public bool DelYsxx(string itemCode, WorkFlowNode ysType) { ArrayList sqls = new ArrayList(); string tmpSql; Dictionary<string, string> delCondition = new Dictionary<string, string>(); delCondition.Clear(); delCondition.Add("itemcode", itemCode); sqls.Add(SqlBuilder.BuildDeleteSql<Xm_Ysxx>(delCondition)); delCondition.Clear(); delCondition.Add("itemcode", itemCode); delCondition.Add("xh", "1"); delCondition.Add("stage", ((int)ItemStage.YanShou).ToString()); sqls.Add(SqlBuilder.BuildDeleteSql<Xm_Gcxx>(delCondition)); //清空项目所有的文件。 tmpSql = "delete from item_file where itemcode = '{0}' and nodeid = '{1}'"; tmpSql = string.Format(tmpSql, itemCode, (int)ysType); sqls.Add(tmpSql); if (ysType == WorkFlowNode.ChuYan) { //清空项目所有的文件。 tmpSql = "delete from item_file where itemcode = '{0}' and nodeid = '{1}' and filecode not in ('24','25','26')"; tmpSql = string.Format(tmpSql, itemCode, (int)WorkFlowNode.JunGong); sqls.Add(tmpSql); } return OracleHelper.ExecuteCommand(sqls); }
public static List <WorkFlowNode> QueryRelatedNodes(this WorkFlowNode node) { var flows = node.Flow; var result = flows.Select(p => p.To); return(result?.ToList()); }
public void SaveDiagram(string diagramJson, string workFlowId) { IList <WorkFlowNode> workFlowNodes = _workFlowNodeRepository.Select(s => s.WorkFlowId == workFlowId).ToList(); IEnumerable <string> ids = workFlowNodes.Select(s => s.Id); dynamic d = JsonConvert.DeserializeObject(diagramJson); foreach (var item in ids) { dynamic connection = d[item]; string style = string.Format("color:#0e76a8;left:{0}px;top:{1}px", connection["left"], connection["top"]); var array = connection["process_to"]; WorkFlowNode workFlowNode = workFlowNodes.First(s => s.Id == item); workFlowNode.Style = style; foreach (var toId in array) { WorkFlowNode toNode = workFlowNodes.First(s => s.Id == (string)toId); //如果直接使用 toNode.previousNodeList.add()会出现Collection was of a fixed size异常 List <string> previousIds = new List <string>(); previousIds.AddRange(toNode.PreviousNodeList); if (!toNode.PreviousNodeList.Contains(item)) { previousIds.Add(item); } toNode.PreviousNodeList = previousIds.Distinct().ToList(); } } _workFlowNodeRepository.BatchUpdate(workFlowNodes); }
/// <summary> /// 验证文件是否都上传。 /// </summary> /// <param name="workflowId">流程Id。</param> /// <param name="itemCode">项目编号。</param> /// <param name="node">节点。</param> /// <param name="fileCodes">是否制定验证文件的类型。</param> /// <returns>错误信息。</returns> protected string FileValidation(string workflowId, string itemCode, WorkFlowNode node, List <string> fileCodes) { WfNode nodeInfo = this.GetNodeInfo(workflowId, ((int)node).ToString()); List <string> nodeFileCodes = nodeInfo.NodeFileCode.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).ToList(); if (fileCodes == null) { fileCodes = nodeFileCodes; } else { fileCodes = fileCodes.Intersect(nodeFileCodes).ToList(); } string format = "\"{0}\"必须上传!"; StringBuilder sb = new StringBuilder(); List <Item_File> fileInfos = new BusiItemManage().GetItemFile(itemCode, node); foreach (var fileInfo in fileInfos) { fileCodes.Remove(fileInfo.FileCode); } if (fileCodes.Count != 0) { foreach (var fileCode in fileCodes) { sb.AppendLine(string.Format(format, EnumHelper.GetFieldDescription(typeof(FileCode), int.Parse(fileCode)))); } } return(sb.ToString()); }
public DataTable QueryFile(string itemCode, WorkFlowNode wfNode, string fileCode) { string strSql = " select a.*, decode(a.filecode, 0, '其它文件', b.filename) FileType" + " from item_file a left join wf_file b on a.filecode = b.filecode" + " Where a.ItemCode = '{0}' and a.NodeId = '{1}' and a.filecode = '{2}'"; strSql = string.Format(strSql, itemCode, (int)wfNode, fileCode); return(OracleHelper.ExecuteDataTable(strSql)); }
/// <summary> /// 绑定流程信息(意见) /// </summary> /// <param name="wfList"></param> /// <param name="textContorl"></param> /// <param name="wfNode"></param> public void BindWfContorl(IList<Wfinstance> wfList, TextBox textContorl, WorkFlowNode wfNode) { var wQuery = (from item in wfList where item.NodeId == ((int)wfNode).ToString() ////&& item.State == "1" orderby item.Orderno descending select item); if (wQuery.Count<Wfinstance>() != 0) { textContorl.Text = wQuery.First().ResultDesc; } }
public IActionResult GetWorkFlowNode(string nodeId) { JsonReturn jsonReturn = null; try { WorkFlowNode workFlowNode = _workFlowNodeRepository.SelectSingle(s => s.Id == nodeId); jsonReturn = new JsonReturn("0", workFlowNode); } catch (Exception ex) { jsonReturn = new JsonReturn("1", ex.Message); } return(Json(jsonReturn)); }
public void StartProcess(string domainName, string id, Func <string, Entity <string> > getDomain, Action onProcessStart = null) { Domain.WorkFlow.WorkFlow workFlow = _workFlowRepository.SelectSingle(s => s.DomainName == domainName, s => s.Version); IEnumerable <WorkFlowNode> workFlowNodes = _workFlowNodeRepository.Select(s => s.WorkFlowId == workFlow.Id); WorkFlowNode workFlowNode = workFlowNodes.FirstOrDefault(s => s.Type == WorkFlowNodeType.开始); WorkFlowStep workFlowStep = new WorkFlowStep(); workFlowStep.DomainName = domainName; workFlowStep.DomainId = id; workFlowStep.WorkFlowNodeId = workFlowNode.Id; workFlowStep.StepName = workFlowNode.NodeName; _workFlowStepRepository.Insert(workFlowStep); onProcessStart.Invoke(); Entity <string> domain = getDomain(id); }
public JsonResult AddFlowStep() { JsonReturn jsonReturn = null; string nodeJson = Request.Form["nodeJson"]; bool update = Convert.ToBoolean(Request.Form["update"]); WorkFlowNode workFlowNode = JsonConvert.DeserializeObject <WorkFlowNode>(nodeJson); try { IList <WorkFlowNodeDto> dtos = _workFlowNodeService.AddOrUpdateStep(workFlowNode, update); jsonReturn = new JsonReturn("0", "", new { total = dtos.Count, list = dtos });; } catch (Exception ex) { jsonReturn = new JsonReturn("1", ex.Message); } return(Json(jsonReturn)); }
public static WorkflowValidation Build(WorkFlowNode node) { switch (node) { case WorkFlowNode.Begin: return(new WorkflowSbValidation()); case WorkFlowNode.TB: return(new WorkflowSbValidation()); case WorkFlowNode.KY: return(new WorkflowKyvalidation()); case WorkFlowNode.GHSJYS: return(new WorkflowGhvalidation()); case WorkFlowNode.YSTZ: return(new WorkflowYsTzvalidation()); case WorkFlowNode.ShiShi: return(new WorkflowSsValidation()); case WorkFlowNode.JunGong: return(new WorkflowJgValidation()); case WorkFlowNode.ChuYan: return(new WorkflowCyValidation()); case WorkFlowNode.ZhongYan: return(new WorkflowZyValidation()); case WorkFlowNode.JueSuan: return(new WorkflowJsValidation()); case WorkFlowNode.GuiDang: return(new WorkflowGdValidation()); default: throw new Exception("未找到验证类。节点ID:" + node); } }
public static ItemStage nodeToStage(WorkFlowNode node) { switch (node) { case WorkFlowNode.TB: case WorkFlowNode.SX: return(ItemStage.ShenBo); case WorkFlowNode.KY: case WorkFlowNode.KYSH: return(ItemStage.KeYan); case WorkFlowNode.GHSJYS: case WorkFlowNode.GHSJSH: return(ItemStage.GuiHua); case WorkFlowNode.YSSH: case WorkFlowNode.YSTZ: return(ItemStage.YuSuan); case WorkFlowNode.ShiShi: return(ItemStage.ShiShi); case WorkFlowNode.JunGong: return(ItemStage.JunGong); case WorkFlowNode.ChuYan: case WorkFlowNode.ZhongYan: return(ItemStage.YanShou); case WorkFlowNode.JueSuan: return(ItemStage.JueSuan); case WorkFlowNode.GuiDang: return(ItemStage.GuiDang); default: return(ItemStage.ShenBo); } }
internal static string Load <T>() { try { Type type = typeof(T); var attrs = type.GetCustomAttributes(); var(key, name) = attrs.GetKeyName(); var members = type.GetMembers(); if (!members.HasAny()) { throw new Exception($"无法获取处理器{key}/{name}的成员信息,加载失败."); } var stateMember = members.GetStateMember(); var configMember = members.GetConfigMember(); //获取状态集 var(start, end) = stateMember.GetStartEnd(); var states = stateMember.GetEnumList(); //获取配置集 var configs = configMember.GetEnumList(); WorkFlowNode node = BuildWorkFlowNode(key, name, start, end, states, configs); if (node.Valicate(out string message)) { NodeList.Add(node); return(key); } else { throw new Exception(message); } } catch (Exception ex) { throw ex; } }
public IList <WorkFlowNodeDto> AddOrUpdateStep(WorkFlowNode workFlowNode, bool update) { if (!update) { workFlowNode.Id = Guid.NewGuid().ToString(); if (workFlowNode.Type == WorkFlowNodeType.开始) { workFlowNode.NodeName = "开始"; } else if (workFlowNode.Type == WorkFlowNodeType.结束) { workFlowNode.NodeName = "结束"; } _workFlowNodeRepository.Insert(workFlowNode); } else { _workFlowNodeRepository.Update(workFlowNode); } IList <WorkFlowNodeDto> workFlowNodes = GetFlow(workFlowNode.WorkFlowId); return(workFlowNodes); }
/// <summary> /// 保存验收信息 /// </summary> /// <param name="node"></param> /// <param name="ysxx"></param> /// <param name="itemFile"></param> /// <param name="xmdw"></param> /// <param name="gcxx"></param> /// <returns></returns> public bool SaveItem(WorkFlowNode node, Xm_Ysxx ysxx, List <Item_File> itemFile, Xm_Xmdw xmdw, Xm_Gcxx gcxx) { ArrayList strSql = new ArrayList(); string tmpSql = string.Empty; ////文件 new BusiItemManage().SaveItemFile(ysxx.ITEMCODE, node, itemFile, ref strSql); ////预算信息 strSql.Add(SqlBuilder.BuildUpdateSql(ysxx)); if (node == WorkFlowNode.ZhongYan) { ////工程信息 new BusiItemManage().SaveItemGcxx(ysxx.ITEMCODE, gcxx, ref strSql); ////单位信息 new BusiItemManage().SaveItemCompany(ysxx.ITEMCODE, ItemCompanyType.JSFH, xmdw, ref strSql); ////更新主表信息(验收时间、验收文号) tmpSql = "update xm_xmxx set YSSJ = to_date('{1}','yyyy-mm-dd'), YsWh = '{2}' where ITEMCODE = '{0}'"; tmpSql = string.Format(tmpSql, ysxx.ITEMCODE, ysxx.ZYSJ.HasValue ? ysxx.ZYSJ.Value.ToString("yyyy-MM-dd") : string.Empty, ysxx.YSWH); strSql.Add(tmpSql); } return(OracleHelper.ExecuteCommand(strSql)); }
protected string MoneyValidation(string itemCode, string dispalyName, WorkFlowNode node, int xh) { StringBuilder sb = new StringBuilder(); DataTable dtMoney = new BusiItemManage().GetItemMoneyDt(itemCode, (int)node, xh.ToString()); AppendErrorMessage(sb, dtOperation.RowNullCheck(dtMoney, dispalyName, NotNullFormat)); condition.Clear(); condition.Add("ZJZE", dispalyName); AppendErrorMessage(sb, dtOperation.ColumnNullCheck(dtMoney, condition, NotNullFormat)); if (dtMoney.Rows.Count > 0) { if (FormatMoney(dtMoney.Rows[0]["ZJZE"].ToString()) != FormatMoney(dtMoney.Rows[0]["fee1"].ToString()) + FormatMoney(dtMoney.Rows[0]["fee2"].ToString()) + FormatMoney(dtMoney.Rows[0]["fee3"].ToString()) + FormatMoney(dtMoney.Rows[0]["fee4"].ToString()) + FormatMoney(dtMoney.Rows[0]["fee5"].ToString()) + FormatMoney(dtMoney.Rows[0]["fee6"].ToString()) + FormatMoney(dtMoney.Rows[0]["fee7"].ToString()) + FormatMoney(dtMoney.Rows[0]["fee8"].ToString())) { AppendErrorMessage(sb, "资金总额与来源情况不相符!"); } if (FormatMoney(dtMoney.Rows[0]["ZJZE"].ToString()) != FormatMoney(dtMoney.Rows[0]["sbgzf"].ToString()) + FormatMoney(dtMoney.Rows[0]["tdpzgcf"].ToString()) + FormatMoney(dtMoney.Rows[0]["ntslgcf"].ToString()) + FormatMoney(dtMoney.Rows[0]["dlgcf"].ToString()) + FormatMoney(dtMoney.Rows[0]["qtgcf"].ToString()) + FormatMoney(dtMoney.Rows[0]["bkyjf"].ToString()) + FormatMoney(dtMoney.Rows[0]["qtfy"].ToString())) { AppendErrorMessage(sb, "资金总额与使用情况不相符!"); } } return sb.ToString(); }
/// <summary> /// 获取下一步处理人数据 /// </summary> /// <param name="domainName"></param> /// <param name="domainId"></param> /// <param name="domain"></param> /// <param name="item"></param> /// <returns></returns> private WorkFlowStep GetNextStep(string domainName, string domainId, Entity <string> domain, WorkFlowNode item) { bool resolve = true; string nodeProperty = item.NodeProperty; int actor = 0; resolve = int.TryParse(nodeProperty, out actor); if (nodeProperty.Contains("domain")) { string[] arr = nodeProperty.Split('.'); PropertyInfo property = domain.GetType().GetProperties().FirstOrDefault(s => s.Name == arr[1]); var value = property.GetType().GetProperty(arr[1]).GetValue(property); resolve = int.TryParse(value.ToString(), out actor); } else { PropertyInfo property = domain.GetType().GetProperties().FirstOrDefault(s => s.Name == "Id"); var value = property.GetType().GetProperty("Id").GetValue(property); string[] arr = nodeProperty.Split('.'); MethodInfo method; object obj; GetInstance(arr[1], arr[0], out method, out obj); var returnValue = method.Invoke(obj, new object[] { value }); resolve = int.TryParse(value.ToString(), out actor); } if (!resolve) { throw new WorkFlowException("节点" + item.Id + "获取流程处理人失败"); } WorkFlowStep workFlowStep = new WorkFlowStep(); workFlowStep.DomainName = domainName; workFlowStep.DomainId = domainId; workFlowStep.WorkFlowNodeId = item.Id; workFlowStep.StepName = item.NodeName; workFlowStep.Actor = actor.ToString(); return(workFlowStep); }
/// <summary> /// 保存项目资金 /// </summary> /// <param name="itemCode"></param> /// <param name="node"></param> /// <param name="itemZJ"></param> /// <returns></returns> public void SaveItemMoney(string itemCode, WorkFlowNode node, Xm_Xmzj itemZJ, ref ArrayList strSql) { string tmpSql = string.Empty; tmpSql = "delete from xm_xmzj where itemCode in ({0}) and nodeId = '{1}'"; tmpSql = string.Format(tmpSql, itemCode.Trim(), ((int)node).ToString()); strSql.Add(tmpSql); if (itemZJ != null) { strSql.Add(SqlBuilder.BuildInsertSql(itemZJ)); //tmpSql = "insert into xm_xmzj(itemcode,stage,nodeid,xh,zjze,sbgzf,tdpzgcf,ntslgcf,dlgcf,qtgcf,bkyjf,qtfy,fee1,fee2,fee3,fee4,fee5,fee6,fee7,fee8)" // + " Values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}')"; //tmpSql = string.Format(tmpSql, itemZJ.ItemCode, ((int)itemZJ.Stage).ToString(), ((int)itemZJ.NodeId).ToString(), itemZJ.Xh, itemZJ.Zjze, // itemZJ.Sbgzf, itemZJ.Tdpzgcf, itemZJ.Ntslgcf, itemZJ.Dlgcf, itemZJ.Qtgcf, itemZJ.Bkyjf, itemZJ.Qtfy); //strSql.Add(tmpSql); } }
public DataTable QueryFile(string itemCode, WorkFlowNode wfNode, string fileCode) { string strSql = " select a.*, decode(a.filecode, 0, '其它文件', b.filename) FileType" + " from item_file a left join wf_file b on a.filecode = b.filecode" + " Where a.ItemCode = '{0}' and a.NodeId = '{1}' and a.filecode = '{2}'"; strSql = string.Format(strSql, itemCode, (int)wfNode, fileCode); return OracleHelper.ExecuteDataTable(strSql); }
private List <SystemUser> GetHandleUsers(WorkFlowNode node, string account) { IQueryable <SystemUser> users = null; switch (node.HandleMode) { case HandleModeEnum.Personnel: // 指定人员模式,找出所有人员生成route记录 var userids = node.Handlers.Split(',', StringSplitOptions.RemoveEmptyEntries); users = from u in _userRepository.GetUsers() where userids.Contains(u.Id.ToString()) select u; break; case HandleModeEnum.Position: // 指定职位模式,找出当前职位的人员生成route记录 users = from u in _userRepository.GetUsers() join uc in _userRepository.GetUserClaims() on u.Id equals uc.UserId where uc.ClaimType == CustomClaimTypes.UserPosition && uc.ClaimValue == node.Position.ToString() select u; break; case HandleModeEnum.Leader: // 指定部门负责人模式,找出指定部门的负责人生成route记录 var leaderId = from d in _departmentRepository.Get() where d.Id.ToString() == node.Department select d.LeaderId; users = from u in _userRepository.GetUsers() where leaderId.FirstOrDefault() == u.Id select u; break; case HandleModeEnum.UserLeader: // 指定发起人部门负责人模式,找出流程发起人所在部门的负责人 // 查找用户所在部门 var department = from u in _userRepository.GetUsers() join uc in _userRepository.GetUserClaims() on u.Id equals uc.UserId where u.UserName == account && uc.ClaimType == CustomClaimTypes.UserDepartment select uc.ClaimValue; // 根据部门去查找部门负责人 leaderId = from d in _departmentRepository.Get() where d.Id.ToString() == department.FirstOrDefault() select d.LeaderId; users = from u in _userRepository.GetUsers() where leaderId.FirstOrDefault() == u.Id select u; break; //case HandleModeEnum.UpLeader: // break; } return(users.ToList()); }
public Users GetItemUser(string itemCode, WorkFlowNode node) { Users userInfo = new Users(); string strSql = "select b.ccode, b.realname, b.telephone from wf_instance a" +" left join users b on a.userid = b.userid" +" where a.itemcode = '{0}' and a.nodeid = '{1}' order by a.orderno desc"; strSql = string.Format(strSql, itemCode, ((int)node).ToString()); DataTable dt = OracleHelper.ExecuteDataTable(strSql); if (dt.Rows.Count > 0) { userInfo.CompanyCode = dt.Rows[0]["ccode"].ToString(); userInfo.RealName = dt.Rows[0]["realname"].ToString(); userInfo.TelePhone = dt.Rows[0]["telephone"].ToString(); } return userInfo; }
/// <summary> /// 保存验收信息 /// </summary> /// <param name="node"></param> /// <param name="ysxx"></param> /// <param name="itemFile"></param> /// <param name="xmdw"></param> /// <param name="gcxx"></param> /// <returns></returns> public bool SaveItem(WorkFlowNode node, Xm_Ysxx ysxx, List<Item_File> itemFile, Xm_Xmdw xmdw, Xm_Gcxx gcxx) { ArrayList strSql = new ArrayList(); string tmpSql = string.Empty; ////文件 new BusiItemManage().SaveItemFile(ysxx.ITEMCODE, node, itemFile, ref strSql); ////预算信息 strSql.Add(SqlBuilder.BuildUpdateSql(ysxx)); if (node == WorkFlowNode.ZhongYan) { ////工程信息 new BusiItemManage().SaveItemGcxx(ysxx.ITEMCODE, gcxx, ref strSql); ////单位信息 new BusiItemManage().SaveItemCompany(ysxx.ITEMCODE, ItemCompanyType.JSFH, xmdw, ref strSql); ////更新主表信息(验收时间、验收文号) tmpSql = "update xm_xmxx set YSSJ = to_date('{1}','yyyy-mm-dd'), YsWh = '{2}' where ITEMCODE = '{0}'"; tmpSql = string.Format(tmpSql, ysxx.ITEMCODE, ysxx.ZYSJ.HasValue ? ysxx.ZYSJ.Value.ToString("yyyy-MM-dd") : string.Empty, ysxx.YSWH); strSql.Add(tmpSql); } return OracleHelper.ExecuteCommand(strSql); }
protected void OnNewDataModel(object sender, EventArgs args) { var dlg = new NewFrm(); if (dlg.ShowDialog() != DialogResult.OK) { return; } var newName = dlg.GetName(); if (string.IsNullOrWhiteSpace(newName)) { MessageBox.Show("名称不能为空"); return; } var fileName = System.IO.Path.Combine(this.Path, newName) + Dict.Extenstions.WorkFlow_Extension; if (File.Exists(fileName)) { MessageBox.Show("文件已经存在"); return; } var writer = File.CreateText(fileName); writer.Flush(); writer.Close(); var dataModel = new WorkFlowNode(); dataModel.Parent = this; dataModel.FileName = System.IO.Path.GetFileNameWithoutExtension(fileName); dataModel.Name = dataModel.Text = System.IO.Path.GetFileNameWithoutExtension(fileName); dataModel.FullName = fileName; this.TreeNode.Expand(); var cmdHost = CommandHostManager.Instance().Get( CommandHostManager.HostType.WorkFlow); var cmd = cmdHost.GetCommand(Dict.Commands.NewWorkFlow) as NewWorkFlowCommand; cmd.File = dataModel.FullName; cmdHost.RunCommand(Dict.Commands.NewWorkFlow); }
protected override void LoadFile() { var directory = new DirectoryInfo(Path); foreach (var dm in directory.GetFiles("*" + Dict.Extenstions.WorkFlow_Extension)) { var dmNode = new WorkFlowNode(); dmNode.FullName = dm.FullName; dmNode.Parent = this; } }
public WfNode(WorkFlowNode node) { this.nodeid = ((int)node).ToString(); this.setItemMenu(node); }
/// <summary> /// 获取项目文件 /// </summary> /// <param name="itemCode"></param> /// <returns></returns> public List<Item_File> GetItemFile(string itemCode, WorkFlowNode wfNode, string fileCode) { return GetItemFile(itemCode, wfNode, fileCode, string.Empty); }
/// <summary> /// 获取项目文件(按环节) /// </summary> /// <param name="itemCode"></param> /// <param name="wfNode"></param> /// <returns></returns> public List<Item_File> GetItemFile(string itemCode, WorkFlowNode wfNode) { string strSql = " select a.*, decode(a.filecode, 0, '其它文件', b.filename) FileType" + " from item_file a left join wf_file b on a.filecode = b.filecode" + " Where a.ItemCode = '{0}' and a.NodeId = '{1}' order by a.nodeid,b.orderno"; strSql = string.Format(strSql, itemCode, ((int)wfNode).ToString()); IDataReader dr = OracleHelper.ExecuteReader(strSql); List<Item_File> fileList = new List<Item_File>(); while (dr.Read()) { Item_File file = new Item_File(); file.ItemCode = dr["ItemCode"].ToString(); file.FileCode = dr["FileCode"].ToString(); file.FileCodeName = dr["FileType"].ToString(); file.FileName = dr["FileName"].ToString(); file.Stage = (ItemStage)EnumHelper.StringValueToEnum(typeof(ItemStage), dr["Stage"].ToString()); file.NodeId = (WorkFlowNode)EnumHelper.StringValueToEnum(typeof(WorkFlowNode), dr["NodeId"].ToString()); file.UserId = dr["UserId"].ToString(); file.UserName = dr["UserName"].ToString(); file.CreateDate = TypeConvert.Convert<DateTime?>(dr["CreateDate"]); fileList.Add(file); } dr.Close(); return fileList; }
public bool UpdateYsxx(Xm_Ysxx ysxx, Xm_Xmdw xmdw, List<Item_File> fileInfos, WorkFlowNode ysType) { ArrayList sqls = new ArrayList(); Dictionary<string, string> deleteCondition = new Dictionary<string, string>(); string tmpSql; sqls.Add(SqlBuilder.BuildUpdateSql(ysxx)); tmpSql = "update xm_xmxx set YSWH = '{0}' where ITEMCODE = '{1}'"; tmpSql = string.Format(tmpSql, ysxx.YSWH, ysxx.ITEMCODE); sqls.Add(tmpSql); if (xmdw != null) { //清空技术复合单位记录。 deleteCondition.Clear(); deleteCondition.Add("itemcode", ysxx.ITEMCODE); deleteCondition.Add("TYPE", ((int)ItemCompanyType.JSFH).ToString()); sqls.Add(SqlBuilder.BuildDeleteSql<Xm_Xmdw>(deleteCondition)); //添加技术复合单位记录。 sqls.Add(SqlBuilder.BuildInsertSql(xmdw)); } //清空项目所有的文件。 tmpSql = "delete from item_file where itemcode = '{0}' and nodeid = '{1}'"; tmpSql = string.Format(tmpSql, ysxx.ITEMCODE, (int)ysType); sqls.Add(tmpSql); //插入基本信息的文件。 foreach (Item_File fileInfo in fileInfos) { sqls.Add(SqlBuilder.BuildInsertSql(fileInfo)); } return OracleHelper.ExecuteCommand(sqls); }
public string GetWfResult(string itemCode, WorkFlowNode node) { string result = string.Empty; string strSql = "select * from wf_instance where itemCode = '{0}' and nodeid = {1} and state = 1 order by orderno desc"; strSql = string.Format(strSql, itemCode, ((int)node).ToString()); DataTable dt = OracleHelper.ExecuteDataTable(strSql); if (dt.Rows.Count > 0) { result = dt.Rows[0]["ResultDesc"].ToString(); } return result; }
/// <summary> /// 判断项目编号在某一环节下是否存在审批记录 /// </summary> /// <param name="flowId"></param> /// <param name="itemCode"></param> /// <param name="node"></param> /// <returns></returns> public bool HasSpRecord(string flowId, string itemCode, WorkFlowNode node) { StringBuilder sbSql = new StringBuilder(); sbSql.AppendFormat("select * from wf_instance where flowid = '{0}' and itemcode = '{1}' and nodeid = {2} and state = 1", flowId, itemCode, ((int)node).ToString()); return OracleHelper.ExecuteDataTable(sbSql.ToString()).Rows.Count > 0; }
public static IEnumerable <WorkFlowNodeMethod> GetMethods(WorkFlowNode node) { var methods = WorkNode.NodeHandlerContainer.GetHandlerMethods(node.Key, node.CurrentState.Value); return(methods); }
/// <summary> /// 是否存在相应环节的审批记录 /// </summary> /// <param name="itemCode"></param> /// <param name="node"></param> /// <returns></returns> public bool HaveSplist(string itemCode, WorkFlowNode node) { string strSql = " select * from wf_instance where itemcode = '{0}' and state = 1 and nodeid = {1}"; strSql = string.Format(strSql, itemCode, ((int)node).ToString()); return OracleHelper.ExecuteDataTable(strSql).Rows.Count > 0; }
public async Task <(bool, string)> PublishWorkFlow(int id, bool isPublish) { try { var wf = await _workFlowRepository.GetAsync(id); if (isPublish) { var nodes = _nodeRepository.Get(n => n.WorkFlowId == id).ToList(); var links = _linkRepository.Get(l => l.WorkFlowId == id).ToList(); // 检查节点种类 var nodeTypeCount = nodes.Select(n => n.NodeType).Distinct().Count(); if (nodeTypeCount < 3) { return(false, "流程不完整!"); } // 检查流程完整 var startNode = nodes.FirstOrDefault(n => n.NodeType == NodeTypeEnum.StartNode); WorkFlowNode endNode = null; while (true) { var link = links.FirstOrDefault(l => l.SourceId == startNode.DomId); if (link != null) { startNode = nodes.FirstOrDefault(n => n.DomId == link.TargetId); if (startNode == null) { endNode = startNode; break; } } else { endNode = startNode; break; } } if (endNode.NodeType != NodeTypeEnum.EndNode) { return(false, "流程不完整!"); } // 检查处理人员模式 if (nodes.Any(n => n.HandleMode == 0 && n.NodeType == NodeTypeEnum.WorkNode)) { return(false, "处理人员信息不完整!"); } } wf.IsPublish = isPublish; await _unitOfWork.SaveAsync(); return(true, string.Empty); } catch (Exception e) { _logger.LogError(e.Message); _logger.LogError(e.StackTrace); return(false, "操作失败!"); } }
public bool UpdateYsxx(Xm_Ysxx ysxx, Xm_Xmdw xmdw, List <Item_File> fileInfos, WorkFlowNode ysType) { ArrayList sqls = new ArrayList(); Dictionary <string, string> deleteCondition = new Dictionary <string, string>(); string tmpSql; sqls.Add(SqlBuilder.BuildUpdateSql(ysxx)); tmpSql = "update xm_xmxx set YSWH = '{0}' where ITEMCODE = '{1}'"; tmpSql = string.Format(tmpSql, ysxx.YSWH, ysxx.ITEMCODE); sqls.Add(tmpSql); if (xmdw != null) { //清空技术复合单位记录。 deleteCondition.Clear(); deleteCondition.Add("itemcode", ysxx.ITEMCODE); deleteCondition.Add("TYPE", ((int)ItemCompanyType.JSFH).ToString()); sqls.Add(SqlBuilder.BuildDeleteSql <Xm_Xmdw>(deleteCondition)); //添加技术复合单位记录。 sqls.Add(SqlBuilder.BuildInsertSql(xmdw)); } //清空项目所有的文件。 tmpSql = "delete from item_file where itemcode = '{0}' and nodeid = '{1}'"; tmpSql = string.Format(tmpSql, ysxx.ITEMCODE, (int)ysType); sqls.Add(tmpSql); //插入基本信息的文件。 foreach (Item_File fileInfo in fileInfos) { sqls.Add(SqlBuilder.BuildInsertSql(fileInfo)); } return(OracleHelper.ExecuteCommand(sqls)); }
public static WorkFlowNode QueryNextNode(this WorkFlowNode node) { var nextNode = node.Flow.First(flow => flow.From.Value == node.EndStatus.Value)?.To; return(nextNode); }
/// <summary> /// 验证文件是否都上传。 /// </summary> /// <param name="workflowId">流程Id。</param> /// <param name="itemCode">项目编号。</param> /// <param name="node">节点。</param> /// <param name="fileCodes">是否制定验证文件的类型。</param> /// <returns>错误信息。</returns> protected string FileValidation(string workflowId, string itemCode, WorkFlowNode node, List<string> fileCodes) { WfNode nodeInfo = this.GetNodeInfo(workflowId, ((int)node).ToString()); List<string> nodeFileCodes = nodeInfo.NodeFileCode.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).ToList(); if (fileCodes == null) { fileCodes = nodeFileCodes; } else { fileCodes = fileCodes.Intersect(nodeFileCodes).ToList(); } string format = "\"{0}\"必须上传!"; StringBuilder sb = new StringBuilder(); List<Item_File> fileInfos = new BusiItemManage().GetItemFile(itemCode, node); foreach (var fileInfo in fileInfos) { fileCodes.Remove(fileInfo.FileCode); } if (fileCodes.Count != 0) { foreach (var fileCode in fileCodes) { sb.AppendLine(string.Format(format, EnumHelper.GetFieldDescription(typeof(FileCode), int.Parse(fileCode)))); } } return sb.ToString(); }
/// <summary> /// 获取项目文件 /// </summary> /// <param name="itemCode"></param> /// <returns></returns> public List<Item_File> GetItemFile(string itemCode, WorkFlowNode wfNode, string fileCode, string xh) { List<object> parameters = new List<object>(); string strSql = " select a.*, decode(a.filecode, 0, '其它文件', b.filename) FileType" + " from item_file a left join wf_file b on a.filecode = b.filecode" + " Where a.ItemCode = '{0}' and a.NodeId = '{1}' and a.filecode = '{2}'"; parameters.Add(itemCode); parameters.Add((int)wfNode); parameters.Add(fileCode); if (!string.IsNullOrEmpty(xh)) { strSql += " and a.xh='{3}'"; parameters.Add(xh); } strSql = string.Format(strSql, parameters.ToArray()); IDataReader dr = OracleHelper.ExecuteReader(strSql); List<Item_File> fileList = new List<Item_File>(); while (dr.Read()) { Item_File file = new Item_File(); file.ItemCode = dr["ItemCode"].ToString(); file.FileCode = dr["FileCode"].ToString(); file.FileCodeName = dr["FileType"].ToString(); file.FileName = dr["FileName"].ToString(); file.Stage = (ItemStage)EnumHelper.StringValueToEnum(typeof(ItemStage), dr["Stage"].ToString()); file.NodeId = (WorkFlowNode)EnumHelper.StringValueToEnum(typeof(WorkFlowNode), dr["NodeId"].ToString()); file.UserId = dr["UserId"].ToString(); file.UserName = dr["UserName"].ToString(); file.CreateDate = TypeConvert.Convert<DateTime?>(dr["CreateDate"]); fileList.Add(file); } dr.Close(); return fileList; }
/// <summary> /// 保存项目文件 /// </summary> /// <param name="itemCode"></param> /// <param name="nodeId"></param> /// <param name="itemFileList"></param> /// <returns></returns> public void SaveItemFile(string itemCode, WorkFlowNode node, List<Item_File> itemFileList, ref ArrayList strSql) { string tmpSql = string.Empty; //string[] fileCodeAry = (from item in itemFileList select item.FileCode).Distinct().ToArray(); tmpSql = "delete from item_file where itemcode in ({0}) and nodeid = '{1}'"; tmpSql = string.Format(tmpSql, itemCode.Trim(), ((int)node).ToString()); //if (fileCodeAry.Length > 0) tmpSql += " and filecode in (" + string.Join(",", fileCodeAry) + ")"; if (node == WorkFlowNode.ShiShi) tmpSql += string.Format(" and filecode not in ({0},{1})", ((int)FileCode.变更申请书).ToString(), ((int)FileCode.变更批复文件).ToString(), ((int)FileCode.预算补充文件).ToString()); strSql.Add(tmpSql); foreach (Item_File itemFile in itemFileList) { tmpSql = "insert into item_file(itemcode,filecode,filename,stage,nodeid,xh,userid,userName,createdate)" + " Values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}',to_date('{8}','yyyy-mm-dd hh24:mi:ss'))"; tmpSql = string.Format(tmpSql, itemFile.ItemCode, itemFile.FileCode, itemFile.FileName, ((int)itemFile.Stage).ToString(), ((int)itemFile.NodeId).ToString(), itemFile.XH, itemFile.UserId, itemFile.UserName, itemFile.CreateDate); strSql.Add(tmpSql); } }
private void setItemMenu(WorkFlowNode node) { switch (node) { case WorkFlowNode.Begin: this.stage = ((int)ItemStage.ShenBo).ToString(); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SB, true, true)); break; case WorkFlowNode.TB: this.stage = ((int)ItemStage.ShenBo).ToString(); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SB, true, true)); break; case WorkFlowNode.SX: this.stage = ((int)ItemStage.ShenBo).ToString(); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SB, true, true)); break; case WorkFlowNode.KY: this.stage = ((int)ItemStage.KeYan).ToString(); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SB, true, false)); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_KY, true, true)); break; case WorkFlowNode.KYSH: this.stage = ((int)ItemStage.KeYan).ToString(); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SB, true, false)); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_KY, true, true)); break; case WorkFlowNode.GHSJYS: this.stage = ((int)ItemStage.GuiHua).ToString(); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SB, true, false)); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_KY, true, false)); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_GHYS, true, true)); break; case WorkFlowNode.GHSJSH: this.stage = ((int)ItemStage.GuiHua).ToString(); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SB, true, false)); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_KY, true, false)); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_GHYS, true, true)); break; case WorkFlowNode.YSSH: this.stage = ((int)ItemStage.YuSuan).ToString(); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SB, true, false)); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_KY, true, false)); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_GHYS, true, true)); break; case WorkFlowNode.YSTZ: this.stage = ((int)ItemStage.YuSuan).ToString(); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SB, true, false)); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_KY, true, false)); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_GHYS, true, true)); break; case WorkFlowNode.ShiShi: this.stage = ((int)ItemStage.ShiShi).ToString(); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SB, false, false)); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_KY, false, false)); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_GHYS, false, false)); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SS, true, true)); //itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SS_ZTB, true, false)); //itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SS_JL, true, false)); //itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SS_JD, true, false)); //itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SS_BG, true, false)); //itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SS_BF, true, false)); break; case WorkFlowNode.JunGong: this.stage = ((int)ItemStage.JunGong).ToString(); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SB, false, false)); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_KY, false, false)); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_GHYS, false, false)); //itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SS_ZTB, true, false)); //itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SS_JL, true, false)); //itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SS_JD, true, false)); //itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SS_BG, true, false)); //itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SS_BF, true, false)); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SS, true, false)); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_JG, true, true)); break; case WorkFlowNode.ChuYan: case WorkFlowNode.ZhongYan: this.stage = ((int)ItemStage.YanShou).ToString(); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SB, false, false)); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_KY, false, false)); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_GHYS, false, false)); //itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SS_ZTB, false, false)); //itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SS_JL, false, false)); //itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SS_JD, false, false)); //itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SS_BG, false, false)); //itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SS_BF, false, false)); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SS, true, false)); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_JG, true, false)); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_YS, true, true)); break; case WorkFlowNode.JueSuan: this.stage = ((int)ItemStage.JueSuan).ToString(); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SB, false, false)); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_KY, false, false)); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_GHYS, false, false)); //itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SS_ZTB, false, false)); //itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SS_JL, false, false)); //itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SS_JD, false, false)); //itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SS_BG, false, false)); //itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SS_BF, false, false)); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SS, false, false)); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_JG, false, false)); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_YS, false, false)); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_JS, true, true)); break; case WorkFlowNode.End: this.stage = ((int)ItemStage.GuiDang).ToString(); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SB, false, false)); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_KY, false, false)); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_GHYS, false, false)); //itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SS_ZTB, false, false)); //itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SS_JL, false, false)); //itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SS_JD, false, false)); //itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SS_BG, false, false)); //itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SS_BF, false, false)); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_SS, false, false)); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_JG, false, false)); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_YS, false, false)); itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_JS, false, false)); //itemmenu.Add(this.getMenu(ItemMenu.ItemInfo_GD, true, true)); break; } }
public List<Item_File> GetItemFileAfterExclude(string itemCode, WorkFlowNode wfNode, List<FileCode> excludeFileCodes) { string strSql = " select a.*, decode(a.filecode, 0, '其它文件', b.filename) FileType" + " from item_file a left join wf_file b on a.filecode = b.filecode" + " Where a.ItemCode = '{0}' and a.NodeId = '{1}' and a.filecode not in ({2})"; string[] fileCodes = (from record in excludeFileCodes select "'" + ((int)record).ToString() + "'").Distinct().ToArray(); strSql = string.Format(strSql, itemCode, (int)wfNode, string.Join(",", fileCodes)); IDataReader dr = OracleHelper.ExecuteReader(strSql); List<Item_File> fileList = new List<Item_File>(); while (dr.Read()) { Item_File file = new Item_File(); file.ItemCode = dr["ItemCode"].ToString(); file.FileCode = dr["FileCode"].ToString(); file.FileCodeName = dr["FileType"].ToString(); file.FileName = dr["FileName"].ToString(); file.Stage = (ItemStage)EnumHelper.StringValueToEnum(typeof(ItemStage), dr["Stage"].ToString()); file.NodeId = (WorkFlowNode)EnumHelper.StringValueToEnum(typeof(WorkFlowNode), dr["NodeId"].ToString()); file.UserId = dr["UserId"].ToString(); file.UserName = dr["UserName"].ToString(); file.CreateDate = TypeConvert.Convert<DateTime?>(dr["CreateDate"]); fileList.Add(file); } dr.Close(); return fileList; }