예제 #1
0
        /// <summary>
        /// 插入清单项
        /// </summary>
        /// <param name="BoqNo"></param>
        /// <param name="Boi"></param>
        /// <param name="OperationBy">操作人</param>
        /// <returns>No信息</returns>
        private WBSline InsertWBSline(String WbsNo, WBSline Boi, String OperationBy, SqlTransaction Tran = null)
        {
            List <CmdParameter> cmds = new List <CmdParameter>();

            cmds.Add(new CmdParameter("@ProjectNo", Boi.ProjectNo));
            cmds.Add(new CmdParameter("@BidNo", Boi.BidNo));
            cmds.Add(new CmdParameter("@WbsNo", WbsNo));
            cmds.Add(new CmdParameter("@WbsLineCode", Boi.WbsLineCode));
            cmds.Add(new CmdParameter("@WbsLineName", Boi.WbsLineName));
            cmds.Add(new CmdParameter("@WbsSysCode", Boi.WbsSysCode));
            cmds.Add(new CmdParameter("@ParentCode", Boi.ParentCode));
            cmds.Add(new CmdParameter("@Amount", Boi.Amount));
            cmds.Add(new CmdParameter("@AmountEx", Boi.AmountEx));
            cmds.Add(new CmdParameter("@Currency", Boi.Currency));
            cmds.Add(new CmdParameter("@CurrencyCode", Boi.CurrencyCode));
            cmds.Add(new CmdParameter("@ExchangeRate", Boi.ExchangeRate));
            cmds.Add(new CmdParameter("@DrawNo", Boi.DrawNo));
            cmds.Add(new CmdParameter("@StartStakesNo", Boi.StartStakesNo));
            cmds.Add(new CmdParameter("@EndStakesNo", Boi.EndStakesNo));
            cmds.Add(new CmdParameter("@OperationBy", OperationBy));
            cmds.Add(new CmdParameter("@Id", 0, System.Data.ParameterDirection.Output));
            cmds.Add(new CmdParameter("@WbsLineNo", "", System.Data.ParameterDirection.Output));
            cmds.Add(new CmdParameter("@Infor", "", System.Data.ParameterDirection.Output));
            cmds.Add(new CmdParameter("@Ok", 0, System.Data.ParameterDirection.Output));
            ParameterResult pResult = new ParameterResult()
            {
                Parameters = cmds.ToArray()
            };

            HdDbCmdManager.GetInstance().Execute("ERP_BoQ.dbo.Gl_Cntrct_Wbsline_Add", CommandType.StoredProcedure, pResult.Parameters, Tran);
            if (!Convert.ToBoolean(pResult["@Ok"]))
            {
                throw new FaultException <ApplicationServiceError>(new ApplicationServiceError()
                {
                    ErrorMessage = pResult["@Infor"].ToString()
                });
            }
            Boi.WbsNo     = WbsNo;
            Boi.WbsLineNo = pResult["@WbsLineNo"].ToString();
            return(Boi);
        }
예제 #2
0
        private static void DGLines(List <WBSline> Lines, WbsInfo ParentInfo)
        {
            int i = 1;

            if (ParentInfo != null && ParentInfo.WbsInfos.Count > 0)
            {
                ParentInfo.WbsInfos.ForEach(m => {
                    WBSline line       = new WBSline();
                    line.WbsSysCode    = ParentInfo.WbsCode + String.Format("{0:D3}", i);
                    line.WbsLineName   = m.WbsName;
                    line.StartStakesNo = m.StartNo;
                    line.EndStakesNo   = m.EndNo;
                    line.DrawNo        = m.DrawNo;
                    line.ParentCode    = ParentInfo.WbsCode;
                    m.WbsCode          = line.WbsSysCode;
                    Lines.Add(line);
                    DGLines(Lines, m);
                    i++;
                });
            }
        }
예제 #3
0
        private static List <WBSline> ImportTotalSheetContent(ISheet sheet)
        {
            //工资项标题行序号
            int rowIndex = -1;
            //部门名称开始列序号
            int        colIndex      = -1;
            List <int> removeColumns = new List <int>();
            IRow       titleRow      = null;

            for (int j = 0; j <= sheet.LastRowNum; j++) //LastRowNum 是当前表的总行数
            {
                IRow row = sheet.GetRow(j);             //读取当前行数据
                if (row != null)
                {
                    ICell cell = row.GetCell(0);  //当前表格
                    if (cell != null)
                    {
                        String strCell = cell.ToString();   //获取表格中的数据并转换为字符串类型
                        if (strCell.Equals("单位工程"))
                        {
                            titleRow = row;
                            colIndex = cell.ColumnIndex;
                            break;
                        }
                    }
                }
            }
            if (titleRow != null)
            {
                rowIndex = titleRow.RowNum;//获取占位符所在行
                int         currentRowIndex = rowIndex + 1;
                int         rangeIndex      = 0;
                LevelObject currentObject   = null;
                wbsRootInfos.Clear();
                AllObjects.Clear();
                List <WbsInfo> RootInfo   = new List <WbsInfo>();
                WbsInfo        parentInfo = null;
                for (int i = currentRowIndex; i <= sheet.LastRowNum; i++)
                {
                    for (int j = 0; j < 6; j++)
                    {
                        if (j == 0)
                        {
                            parentInfo = null;
                        }
                        LevelObject tmp = Match(sheet, parentInfo, i, j);
                        if (tmp != null)
                        {
                            currentObject = tmp;
                            parentInfo    = tmp.WbsInfo;
                        }
                    }
                }
            }
            int            codeIndex = 1;
            List <WBSline> lines     = new List <WBSline>();

            wbsRootInfos.ForEach(m => {
                WBSline line     = new WBSline();
                line.WbsSysCode  = String.Format("{0:D2}", codeIndex);
                line.WbsLineName = m.WbsName;
                m.WbsCode        = line.WbsSysCode;
                lines.Add(line);
                DGLines(lines, m);
                codeIndex++;
            });
            return(lines);
        }
예제 #4
0
        public WBSBoq Save(string ProjectNo, string BidNo, String WbsName, decimal TotalAmount
                           , List <WBSline> AddList, List <WBSline> UpdateList, List <string> DeleteItemNoList
                           , List <WBSline_boi> AddRelation, List <WBSline_boi> UpdateRelation, List <WBSline_boi> DeleteRelation)
        {
            WBSBoq result   = new WBSBoq();
            String strWbsNo = null;

            HdDbCmdManager.GetInstance().ExecuteTran(Tran =>
            {
                strWbsNo = GetWbsNo(ProjectNo, Tran);
                if (String.IsNullOrEmpty(strWbsNo))
                {
                    strWbsNo = InsertBoq(ProjectNo, BidNo, WbsName, TotalAmount, ServiceContext.LoginName, Tran);
                }
                else
                {
                    UpdateBoq(BidNo, strWbsNo, WbsName, TotalAmount, ServiceContext.LoginName, Tran);
                }

                //删除关联关系
                if (DeleteRelation != null)
                {
                    DeleteRelation.ForEach(m =>
                    {
                        DeleteWBSlineBoi(m.ItemNo, m.WBSLineNo, ServiceContext.LoginName, Tran);
                    });
                }

                //删除明细
                if (DeleteItemNoList != null)
                {
                    DeleteItemNoList.ForEach(m =>
                    {
                        DeleteWBSline(m, ServiceContext.LoginName, Tran);
                    });
                }

                //修改关联关系
                if (UpdateRelation != null)
                {
                    UpdateRelation.ForEach(m =>
                    {
                        if (DeleteRelation.Find(n => n.WBSLineNo == m.WBSLineNo && n.ItemNo == m.ItemNo) == null)
                        {
                            UpdateWBSlineBoi(m, ServiceContext.LoginName, Tran);
                        }
                    });
                }

                //修改
                if (UpdateList != null)
                {
                    UpdateList.ForEach(m =>
                    {
                        UpdateWBSline(m, ServiceContext.LoginName, Tran);
                    });
                }

                //新增WBS清单项
                if (AddList != null)
                {
                    AddList.ForEach(m =>
                    {
                        result.WBSlineList.Add(InsertWBSline(strWbsNo, m, ServiceContext.LoginName, Tran));
                    });
                }

                //新增关联关系
                if (AddRelation != null)
                {
                    AddRelation.ForEach(m =>
                    {
                        m.WbsNo = strWbsNo;
                        if (String.IsNullOrEmpty(m.WBSLineNo))
                        {
                            WBSline line = result.WBSlineList.Find(n => n.WbsSysCode == m.WbsSysCode);
                            m.WBSLineNo  = line != null ? line.WbsLineNo : null;
                        }
                        result.AllRelationList.Add(AddWBSlineBoi(strWbsNo, m, ServiceContext.LoginName, Tran));
                    });
                }
            });
            return(result);
        }