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);
     }
 }
Example #2
0
        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());
        }
Example #4
0
        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);
            }
        }
Example #5
0
        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());
        }
Example #7
0
        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());
        }
Example #9
0
        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));
        }
Example #10
0
 /// <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));
        }
Example #12
0
        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);
            }
        }
Example #15
0
        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);
        }
Example #18
0
        /// <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));
        }
Example #19
0
        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();
        }
Example #20
0
        /// <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);
        }
Example #21
0
        /// <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);
            }
        }
Example #22
0
 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());
        }
Example #24
0
 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;
 }
Example #25
0
        /// <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);
        }
Example #26
0
        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);
        }
Example #27
0
        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;
            }
        }
Example #28
0
 public WfNode(WorkFlowNode node)
 {
     this.nodeid = ((int)node).ToString();
     this.setItemMenu(node);
 }
Example #29
0
 /// <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);
 }
Example #30
0
        /// <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;
        }
Example #31
0
        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);
        }
Example #32
0
 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;
 }
Example #33
0
        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);
            }
        }
Example #34
0
 /// <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);
            }
Example #36
0
 /// <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;
 }
Example #37
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, "操作失败!");
            }
        }
Example #38
0
        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);
        }
Example #40
0
 /// <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();
 }
Example #41
0
        /// <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;
        }
Example #42
0
        /// <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);
            }
        }
Example #43
0
        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;
            }
        }
Example #44
0
        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;
        }