686 lines
		
	
	
		
			27 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			686 lines
		
	
	
		
			27 KiB
		
	
	
	
		
			C#
		
	
	
	
using System;
 | 
						||
using System.Collections.Generic;
 | 
						||
using System.Linq;
 | 
						||
using System.Text;
 | 
						||
using System.Threading.Tasks;
 | 
						||
using System.Web.Caching;
 | 
						||
using System.Web.UI.WebControls;
 | 
						||
 | 
						||
namespace BLL
 | 
						||
{
 | 
						||
    public class UnitWorkService
 | 
						||
    {
 | 
						||
        public static Model.SGGLDB db = Funs.DB;
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 添加单位工程信息
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="WPQ"></param>
 | 
						||
        public static void AddUnitWork(Model.WBS_UnitWork UnitWork)
 | 
						||
        {
 | 
						||
            Model.SGGLDB db = Funs.DB;
 | 
						||
            Model.WBS_UnitWork newUnitWork = new Model.WBS_UnitWork();
 | 
						||
            newUnitWork.UnitWorkId = UnitWork.UnitWorkId;
 | 
						||
            newUnitWork.UnitWorkCode = UnitWork.UnitWorkCode;
 | 
						||
            newUnitWork.UnitWorkName = UnitWork.UnitWorkName;
 | 
						||
            newUnitWork.SuperUnitWork = UnitWork.SuperUnitWork;
 | 
						||
            newUnitWork.IsChild = UnitWork.IsChild;
 | 
						||
            newUnitWork.ProjectId = UnitWork.ProjectId;
 | 
						||
            newUnitWork.ProjectType = UnitWork.ProjectType;
 | 
						||
            newUnitWork.UnitId = UnitWork.UnitId;
 | 
						||
            newUnitWork.SupervisorUnitId = UnitWork.SupervisorUnitId;
 | 
						||
            newUnitWork.NDEUnit = UnitWork.NDEUnit;
 | 
						||
            newUnitWork.Costs = UnitWork.Costs;
 | 
						||
            newUnitWork.MainItemAndDesignProfessionalIds = UnitWork.MainItemAndDesignProfessionalIds;
 | 
						||
            db.WBS_UnitWork.InsertOnSubmit(newUnitWork);
 | 
						||
            db.SubmitChanges();
 | 
						||
            //GetWeights(UnitWork.ProjectId);
 | 
						||
        }
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 修改单位工程信息
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="WPQ"></param>
 | 
						||
        public static void UpdateUnitWork(Model.WBS_UnitWork UnitWork)
 | 
						||
        {
 | 
						||
            Model.SGGLDB db = Funs.DB;
 | 
						||
            Model.WBS_UnitWork newUnitWork = db.WBS_UnitWork.FirstOrDefault(e => e.UnitWorkId == UnitWork.UnitWorkId);
 | 
						||
            if (newUnitWork != null)
 | 
						||
            {
 | 
						||
                newUnitWork.UnitWorkId = UnitWork.UnitWorkId;
 | 
						||
                newUnitWork.UnitWorkCode = UnitWork.UnitWorkCode;
 | 
						||
                newUnitWork.UnitWorkName = UnitWork.UnitWorkName;
 | 
						||
                newUnitWork.SuperUnitWork = UnitWork.SuperUnitWork;
 | 
						||
                newUnitWork.IsChild = UnitWork.IsChild;
 | 
						||
                newUnitWork.ProjectId = UnitWork.ProjectId;
 | 
						||
                newUnitWork.ProjectType = UnitWork.ProjectType;
 | 
						||
                newUnitWork.UnitId = UnitWork.UnitId;
 | 
						||
                newUnitWork.SupervisorUnitId = UnitWork.SupervisorUnitId;
 | 
						||
                newUnitWork.NDEUnit = UnitWork.NDEUnit;
 | 
						||
                newUnitWork.Costs = UnitWork.Costs;
 | 
						||
                newUnitWork.MainItemAndDesignProfessionalIds = UnitWork.MainItemAndDesignProfessionalIds;
 | 
						||
                db.SubmitChanges();
 | 
						||
            }
 | 
						||
            //GetWeights(UnitWork.ProjectId);
 | 
						||
            //if (UnitWork.Costs != null)
 | 
						||
            //{
 | 
						||
            //    UpdateWBSCosts(UnitWork.UnitWorkId, Convert.ToDecimal(UnitWork.Costs));
 | 
						||
            //}
 | 
						||
        }
 | 
						||
 | 
						||
        private static void GetWeights(string projectId)
 | 
						||
        {
 | 
						||
            Model.SGGLDB db = Funs.DB;
 | 
						||
            decimal totalCosts = 0;
 | 
						||
            var unitWorks = from x in db.WBS_UnitWork where x.ProjectId == projectId && x.Costs != null select x;
 | 
						||
            foreach (var unitWork in unitWorks)
 | 
						||
            {
 | 
						||
                totalCosts += Convert.ToDecimal(unitWork.Costs);
 | 
						||
            }
 | 
						||
            foreach (var unitWork in unitWorks)
 | 
						||
            {
 | 
						||
                unitWork.Weights = unitWork.Costs / totalCosts * 100;
 | 
						||
                db.SubmitChanges();
 | 
						||
            }
 | 
						||
            var noCostUnitWorks = from x in db.WBS_UnitWork where x.ProjectId == projectId && x.Costs == null select x;
 | 
						||
            foreach (var noCostUnitWork in noCostUnitWorks)
 | 
						||
            {
 | 
						||
                noCostUnitWork.Weights = null;
 | 
						||
                db.SubmitChanges();
 | 
						||
            }
 | 
						||
        }
 | 
						||
        #region 更新计算单位工程WBS项的建安工程费
 | 
						||
        /// <summary>
 | 
						||
        /// 更新计算单位工程WBS项的建安工程费
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="unitWorkId"></param>
 | 
						||
        /// <param name="costs"></param>
 | 
						||
        private static void UpdateWBSCosts(string unitWorkId, decimal costs)
 | 
						||
        {
 | 
						||
            Model.SGGLDB db = Funs.DB;
 | 
						||
            var workPackages = from x in db.WBS_WorkPackage where x.UnitWorkId == unitWorkId && x.SuperWorkPackageId == null && x.IsApprove == true select x;
 | 
						||
            foreach (var item in workPackages)
 | 
						||
            {
 | 
						||
                if (item.Weights != null)
 | 
						||
                {
 | 
						||
                    item.Costs = item.Weights / 100 * costs;
 | 
						||
                    db.SubmitChanges();
 | 
						||
                    UpdateWorkPackageCosts(item.WorkPackageId, Convert.ToDecimal(item.Costs));
 | 
						||
                }
 | 
						||
            }
 | 
						||
        }
 | 
						||
 | 
						||
        private static void UpdateWorkPackageCosts(string workPackageId, decimal costs)
 | 
						||
        {
 | 
						||
            Model.SGGLDB db = Funs.DB;
 | 
						||
            var childWorkPackages = from x in db.WBS_WorkPackage where x.SuperWorkPackageId == workPackageId && x.IsApprove == true select x;
 | 
						||
            if (childWorkPackages.Count() > 0)   //存在子级
 | 
						||
            {
 | 
						||
                foreach (var item in childWorkPackages)
 | 
						||
                {
 | 
						||
                    if (item.Weights != null)
 | 
						||
                    {
 | 
						||
                        item.Costs = item.Weights / 100 * costs;
 | 
						||
                        db.SubmitChanges();
 | 
						||
                        UpdateWorkPackageCosts(item.WorkPackageId, Convert.ToDecimal(item.Costs));
 | 
						||
                    }
 | 
						||
                }
 | 
						||
            }
 | 
						||
            else
 | 
						||
            {
 | 
						||
                //var controlItemAndCycles = from x in db.WBS_ControlItemAndCycle where x.WorkPackageId == workPackageId && x.IsApprove == true select x;
 | 
						||
                //foreach (var item in controlItemAndCycles)
 | 
						||
                //{
 | 
						||
                //    if (item.Weights != null)
 | 
						||
                //    {
 | 
						||
                //        item.Costs = item.Weights / 100 * costs;
 | 
						||
                //        db.SubmitChanges();
 | 
						||
                //    }
 | 
						||
                //}
 | 
						||
            }
 | 
						||
        }
 | 
						||
        #endregion
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 根据主键删除单位工程信息
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="checkerId"></param>
 | 
						||
        public static void DeleteUnitWorkById(string UnitWorkId)
 | 
						||
        {
 | 
						||
            Model.SGGLDB db = Funs.DB;
 | 
						||
            Model.WBS_UnitWork Unitwork = db.WBS_UnitWork.FirstOrDefault(e => e.UnitWorkId == UnitWorkId);
 | 
						||
            if (Unitwork != null)
 | 
						||
            {
 | 
						||
                db.WBS_UnitWork.DeleteOnSubmit(Unitwork);
 | 
						||
                db.SubmitChanges();
 | 
						||
                GetWeights(Unitwork.ProjectId);
 | 
						||
            }
 | 
						||
        }
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 获取单位工程信息
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="UnitWorkId"></param>
 | 
						||
        /// <returns></returns>
 | 
						||
        public static Model.WBS_UnitWork GetUnitWorkByUnitWorkId(string UnitWorkId)
 | 
						||
        {
 | 
						||
            return Funs.DB.WBS_UnitWork.FirstOrDefault(e => e.UnitWorkId == UnitWorkId);
 | 
						||
        }
 | 
						||
 | 
						||
        public static Model.WBS_UnitWork GetUnitWorkByUnitWorkName(string projectId,string unitWorkName)
 | 
						||
        {
 | 
						||
            return Funs.DB.WBS_UnitWork.FirstOrDefault(e =>e.ProjectId ==projectId && e.UnitWorkName == unitWorkName);
 | 
						||
        }
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 获取单位工程信息
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="UnitWorkId"></param>
 | 
						||
        /// <returns></returns>
 | 
						||
        public static Model.WBS_UnitWork GetUnitWorkByMainItemAndDesignProfessionalIds(string mainItemAndDesignProfessionalIds)
 | 
						||
        {
 | 
						||
            return Funs.DB.WBS_UnitWork.FirstOrDefault(e => e.MainItemAndDesignProfessionalIds.Contains(mainItemAndDesignProfessionalIds));
 | 
						||
        }
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 根据单位工程编号获取单位工程信息
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="UnitWorkCode"></param>
 | 
						||
        /// <returns></returns>
 | 
						||
        public static List<Model.WBS_UnitWork> GetUnitWorkByUnitWorkCode(string UnitWorkCode)
 | 
						||
        {
 | 
						||
            return (from x in Funs.DB.WBS_UnitWork where x.UnitWorkCode == UnitWorkCode select x).ToList();
 | 
						||
        }
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 下拉框选择(获取 text value)
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="text"></param>
 | 
						||
        /// <returns></returns>
 | 
						||
        public static string GetTextOrVal(string text, string val, string projectId)
 | 
						||
        {
 | 
						||
            string str = null;
 | 
						||
            ListItem[] listitem = null;
 | 
						||
            Cache cache = new Cache();
 | 
						||
            if (cache.Get("UnitWorkList") == null)
 | 
						||
            {
 | 
						||
                listitem = GetUnitWork(projectId);
 | 
						||
                if (listitem.Count() > 0)
 | 
						||
                {
 | 
						||
                    cache.Insert("UnitWorkList", listitem, null, DateTime.UtcNow.AddMinutes(10), TimeSpan.Zero, CacheItemPriority.Normal, null);
 | 
						||
                }
 | 
						||
            }
 | 
						||
            else
 | 
						||
            {
 | 
						||
                listitem = (ListItem[])cache.Get("UnitWorkList");
 | 
						||
            }
 | 
						||
            if (!string.IsNullOrWhiteSpace(text))
 | 
						||
            {
 | 
						||
 | 
						||
                foreach (var item in listitem)
 | 
						||
                {
 | 
						||
                    if (text.Equals(item.Text))
 | 
						||
                    {
 | 
						||
                        str = item.Value;
 | 
						||
                    }
 | 
						||
                }
 | 
						||
            }
 | 
						||
            if (!string.IsNullOrWhiteSpace(val))
 | 
						||
            {
 | 
						||
                foreach (var item in listitem)
 | 
						||
                {
 | 
						||
                    if (val.Equals(item.Value))
 | 
						||
                    {
 | 
						||
                        str = item.Text;
 | 
						||
                    }
 | 
						||
                }
 | 
						||
            }
 | 
						||
 | 
						||
            return str;
 | 
						||
        }
 | 
						||
        /// <summary>
 | 
						||
        /// 获取单位工程名称项
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="projectId">项目Id</param>
 | 
						||
        /// <returns></returns>
 | 
						||
        public static ListItem[] GetUnitWorkList(string projectId)
 | 
						||
        {
 | 
						||
            List<Model.WBS_UnitWork> q = (from x in Funs.DB.WBS_UnitWork where x.ProjectId == projectId && (x.SuperUnitWork == null || x.SuperUnitWork == "0") orderby x.UnitWorkCode select x).ToList();
 | 
						||
            ListItem[] item = new ListItem[q.Count()];
 | 
						||
            for (int i = 0; i < q.Count(); i++)
 | 
						||
            {
 | 
						||
                item[i] = new ListItem((q[i].UnitWorkCode + "-" + q[i].UnitWorkName + GetProjectType(q[i].ProjectType)) ?? "", q[i].UnitWorkId.ToString());
 | 
						||
            }
 | 
						||
            return item;
 | 
						||
        }
 | 
						||
        /// <summary>
 | 
						||
        /// 根据工程类型获取名称
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="projectType"></param>
 | 
						||
        /// <returns></returns>
 | 
						||
        public static string GetProjectType(string projectType)
 | 
						||
        {
 | 
						||
            string name = string.Empty;
 | 
						||
            if (projectType == "1")
 | 
						||
            {
 | 
						||
                name = "(建筑)";
 | 
						||
            }
 | 
						||
            else if (projectType == "2")
 | 
						||
            {
 | 
						||
                name = "(安装)";
 | 
						||
            }
 | 
						||
            return name;
 | 
						||
        }
 | 
						||
        /// <summary>
 | 
						||
        /// 获取单位工程名称项
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="projectId">项目Id</param>
 | 
						||
        /// <returns></returns>
 | 
						||
        public static List<Model.WBS_UnitWork> GetUnitWorkLists(string projectId)
 | 
						||
        {
 | 
						||
            return (from x in Funs.DB.WBS_UnitWork where x.ProjectId == projectId && (x.SuperUnitWork == null || x.SuperUnitWork == "0") orderby x.UnitWorkCode select x).ToList();
 | 
						||
        }
 | 
						||
        public static ListItem[] GetUnitWork(string projectId)
 | 
						||
        {
 | 
						||
            List<Model.WBS_UnitWork> q = (from x in Funs.DB.WBS_UnitWork where x.ProjectId == projectId && (x.SuperUnitWork == null || x.SuperUnitWork == "0") orderby x.UnitWorkCode select x).ToList();
 | 
						||
            ListItem[] item = new ListItem[q.Count()];
 | 
						||
            for (int i = 0; i < q.Count(); i++)
 | 
						||
            {
 | 
						||
                item[i] = new ListItem((q[i].UnitWorkCode + "-" + q[i].UnitWorkName + GetProjectType(q[i].ProjectType)) ?? "", q[i].UnitWorkId.ToString());
 | 
						||
            }
 | 
						||
            return item;
 | 
						||
        }
 | 
						||
        public static ListItem[] GetUnitWork2(string projectId)
 | 
						||
        {
 | 
						||
            List<Model.WBS_UnitWork> q = (from x in Funs.DB.WBS_UnitWork where x.ProjectId == projectId && (x.SuperUnitWork == null || x.SuperUnitWork == "0") orderby x.UnitWorkCode select x).ToList();
 | 
						||
            ListItem[] item = new ListItem[q.Count()];
 | 
						||
            for (int i = 0; i < q.Count(); i++)
 | 
						||
            {
 | 
						||
                item[i] = new ListItem(q[i].UnitWorkName, q[i].UnitWorkId.ToString());
 | 
						||
            }
 | 
						||
            return item;
 | 
						||
        }
 | 
						||
        /// <summary>
 | 
						||
        /// 获取单位名称
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="UnitId"></param>
 | 
						||
        /// <returns></returns>
 | 
						||
        public static string GetNameById(string id)
 | 
						||
        {
 | 
						||
            string name = string.Empty;
 | 
						||
            var UnitWork = Funs.DB.WBS_UnitWork.FirstOrDefault(x => x.UnitWorkId == id);
 | 
						||
            if (UnitWork != null)
 | 
						||
            {
 | 
						||
                name = UnitWork.UnitWorkName + GetProjectType(UnitWork.ProjectType);
 | 
						||
            }
 | 
						||
            return name;
 | 
						||
        }
 | 
						||
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        ///  单位工程表下拉框
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="dropName">下拉框名字</param>
 | 
						||
        /// <param name="isShowPlease">是否显示请选择</param>
 | 
						||
        public static void InitUnitWorkDownList(FineUIPro.DropDownList dropName, string projectId, bool isShowPlease)
 | 
						||
        {
 | 
						||
            dropName.DataValueField = "Value";
 | 
						||
            dropName.DataTextField = "Text";
 | 
						||
            dropName.DataSource = BLL.UnitWorkService.GetUnitWorkList(projectId);
 | 
						||
            dropName.DataBind();
 | 
						||
            if (isShowPlease)
 | 
						||
            {
 | 
						||
                Funs.FineUIPleaseSelect(dropName);
 | 
						||
            }
 | 
						||
        }
 | 
						||
        /// <summary>
 | 
						||
        ///  单位工程表下拉框
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="dropName">下拉框名字</param>
 | 
						||
        /// <param name="isShowPlease">是否显示请选择</param>
 | 
						||
        public static void InitUnitWorkDownListByProjectType(FineUIPro.DropDownList dropName, string projectId, string projectType, bool isShowPlease)
 | 
						||
        {
 | 
						||
            dropName.DataValueField = "Value";
 | 
						||
            dropName.DataTextField = "Text";
 | 
						||
            dropName.DataSource = BLL.UnitWorkService.GetUnitWorkListByProjectType(projectId, projectType);
 | 
						||
            dropName.DataBind();
 | 
						||
            if (isShowPlease)
 | 
						||
            {
 | 
						||
                Funs.FineUIPleaseSelect(dropName);
 | 
						||
            }
 | 
						||
        }
 | 
						||
        /// <summary>
 | 
						||
        ///  单位工程表下拉框
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="dropName">下拉框名字</param>
 | 
						||
        /// <param name="isShowPlease">是否显示请选择</param>
 | 
						||
        public static void InitUnitWorkList(FineUIPro.DropDownList dropName, string projectId, bool isShowPlease)
 | 
						||
        {
 | 
						||
            dropName.DataValueField = "Text";
 | 
						||
            dropName.DataTextField = "Text";
 | 
						||
            dropName.DataSource = GetUnitWork(projectId);
 | 
						||
            dropName.DataBind();
 | 
						||
            if (isShowPlease)
 | 
						||
            {
 | 
						||
                Funs.FineUIPleaseSelect(dropName);
 | 
						||
            }
 | 
						||
        }
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        ///  单位工程表下拉框
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="dropName">下拉框名字</param>
 | 
						||
        /// <param name="isShowPlease">是否显示请选择</param>
 | 
						||
        public static void InitUnitWorkList2(FineUIPro.DropDownList dropName, string projectId, bool isShowPlease)
 | 
						||
        {
 | 
						||
            dropName.DataValueField = "Text";
 | 
						||
            dropName.DataTextField = "Text";
 | 
						||
            dropName.DataSource = GetUnitWork2(projectId);
 | 
						||
            dropName.DataBind();
 | 
						||
            if (isShowPlease)
 | 
						||
            {
 | 
						||
                Funs.FineUIPleaseSelect(dropName);
 | 
						||
            }
 | 
						||
        }
 | 
						||
        /// <summary>
 | 
						||
        /// 根据项目id 获取单位工程
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="projectId"></param>
 | 
						||
        /// <returns></returns>
 | 
						||
        public static List<Model.WBS_UnitWork> GetUnitWorkListByPid(string projectId)
 | 
						||
        {
 | 
						||
            Model.SGGLDB db = Funs.DB;
 | 
						||
            List<Model.WBS_UnitWork> q = (from x in db.WBS_UnitWork where x.ProjectId == projectId && (x.SuperUnitWork == null||x.SuperUnitWork=="0") orderby x.UnitWorkCode select x).ToList();
 | 
						||
            return q;
 | 
						||
        }
 | 
						||
        public static Model.WBS_UnitWork getUnitWorkByUnitWorkId(string UnitWorkId)
 | 
						||
        {
 | 
						||
            return Funs.DB.WBS_UnitWork.FirstOrDefault(e => e.UnitWorkId.ToString() == UnitWorkId);
 | 
						||
        }
 | 
						||
        public static List<Model.WBS_UnitWork> GetUnitWorkListByPidForApi(string projectId, string projectType)
 | 
						||
        {
 | 
						||
            string[] type = null;
 | 
						||
            if (!string.IsNullOrEmpty(projectType))
 | 
						||
                type = projectType.Split(',');
 | 
						||
            var unitWorks = from x in Funs.DB.WBS_UnitWork where x.ProjectId == projectId && (x.SuperUnitWork == null || x.SuperUnitWork == "0") && (type == null || type.Contains(x.ProjectType)) orderby x.UnitWorkCode select x;
 | 
						||
            return unitWorks.ToList();
 | 
						||
        }
 | 
						||
        /// <summary>
 | 
						||
        /// 获取单位工程名称项
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="projectId">项目Id</param>
 | 
						||
        /// <returns></returns>
 | 
						||
        public static ListItem[] GetUnitWorkListByProjectType(string projectId, string projectType)
 | 
						||
        {
 | 
						||
            List<Model.WBS_UnitWork> q = (from x in Funs.DB.WBS_UnitWork where x.ProjectId == projectId && (x.SuperUnitWork == null||x.SuperUnitWork=="0") && x.ProjectType == projectType orderby x.UnitWorkCode select x).ToList();
 | 
						||
            ListItem[] item = new ListItem[q.Count()];
 | 
						||
            for (int i = 0; i < q.Count(); i++)
 | 
						||
            {
 | 
						||
                item[i] = new ListItem((q[i].UnitWorkCode + "-" + q[i].UnitWorkName + GetProjectType(q[i].ProjectType)) ?? "", q[i].UnitWorkId.ToString());
 | 
						||
            }
 | 
						||
            return item;
 | 
						||
        }
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 根据单位工程Id获取对应code的所有单位工程Id集合
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="unitWorkId"></param>
 | 
						||
        /// <returns></returns>
 | 
						||
        public static string GetUnitWorkIdsByUnitWorkId(string unitWorkId)
 | 
						||
        {
 | 
						||
            string unitWorkIds = string.Empty;
 | 
						||
            Model.WBS_UnitWork unitWork = GetUnitWorkByUnitWorkId(unitWorkId);
 | 
						||
            if (unitWork != null)
 | 
						||
            {
 | 
						||
                var q = from x in Funs.DB.WBS_UnitWork where x.UnitWorkCode == unitWork.UnitWorkCode select x;
 | 
						||
                foreach (var item in q)
 | 
						||
                {
 | 
						||
                    unitWorkIds += item.UnitWorkId + ",";
 | 
						||
                }
 | 
						||
            }
 | 
						||
            if (!string.IsNullOrEmpty(unitWorkIds))
 | 
						||
            {
 | 
						||
                unitWorkIds = unitWorkIds.Substring(0, unitWorkIds.LastIndexOf(","));
 | 
						||
            }
 | 
						||
            return unitWorkIds;
 | 
						||
        }
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 根据单位工程类别获取单位工程
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="state"></param>
 | 
						||
        /// <returns></returns>
 | 
						||
        public static List<Model.WBS_UnitWork> GetUnitWorkDownList(string ProjectType, string ProjectId)
 | 
						||
        {
 | 
						||
            if (ProjectType == "1")
 | 
						||
            {
 | 
						||
                List<Model.WBS_UnitWork> lis = (from x in Funs.DB.WBS_UnitWork where x.ProjectType == "1" && x.ProjectId == ProjectId && (x.SuperUnitWork == null || x.SuperUnitWork == "0") orderby x.UnitWorkCode select x).ToList();
 | 
						||
                return lis;
 | 
						||
            }
 | 
						||
            else if (ProjectType == "2")
 | 
						||
            {
 | 
						||
                List<Model.WBS_UnitWork> lis = (from x in Funs.DB.WBS_UnitWork where x.ProjectType == "2" && x.ProjectId == ProjectId && (x.SuperUnitWork == null || x.SuperUnitWork == "0") orderby x.UnitWorkCode select x).ToList();
 | 
						||
                return lis;
 | 
						||
            }
 | 
						||
            else
 | 
						||
                return null;
 | 
						||
        }
 | 
						||
 | 
						||
        public static string GetUnitWorkName(string unitWorkIds)
 | 
						||
        {
 | 
						||
            string unitWorkName = string.Empty;
 | 
						||
            if (!string.IsNullOrEmpty(unitWorkIds))
 | 
						||
            {
 | 
						||
                string[] strs = unitWorkIds.Split(',');
 | 
						||
                foreach (var item in strs)
 | 
						||
                {
 | 
						||
                    var un = BLL.UnitWorkService.GetUnitWorkByUnitWorkId(item);
 | 
						||
                    if (un != null)
 | 
						||
                    {
 | 
						||
                        unitWorkName += un.UnitWorkName + GetProjectType(un.ProjectType) + ",";
 | 
						||
                    }
 | 
						||
                }
 | 
						||
                if (!string.IsNullOrEmpty(unitWorkName))
 | 
						||
                {
 | 
						||
                    unitWorkName = unitWorkName.Substring(0, unitWorkName.LastIndexOf(","));
 | 
						||
                }
 | 
						||
            }
 | 
						||
            return unitWorkName;
 | 
						||
        }
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 获取单位工程下拉列表
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="dropName"></param>
 | 
						||
        /// <param name="projectId"></param>
 | 
						||
        /// <param name="isShowPlease"></param>
 | 
						||
        public static void InitUnitWorkDropDownList(FineUIPro.DropDownList dropName, string projectId, bool isShowPlease)
 | 
						||
        {
 | 
						||
            var unitWorks = from x in Funs.DB.WBS_UnitWork
 | 
						||
                            where x.ProjectId == projectId && (x.SuperUnitWork == null || x.SuperUnitWork == "0")
 | 
						||
                            orderby x.UnitWorkCode
 | 
						||
                            select new
 | 
						||
                            {
 | 
						||
                                x.UnitWorkId,
 | 
						||
                                UnitWorkName = GetUnitWorkALLName(x.UnitWorkId)
 | 
						||
                            };
 | 
						||
 | 
						||
            dropName.DataValueField = "UnitWorkId";
 | 
						||
            dropName.DataTextField = "UnitWorkName";
 | 
						||
            dropName.DataSource = unitWorks;
 | 
						||
            dropName.DataBind();
 | 
						||
            if (isShowPlease)
 | 
						||
            {
 | 
						||
                Funs.FineUIPleaseSelect(dropName);
 | 
						||
            }
 | 
						||
        }
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 获取单位工程下拉列表
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="dropName"></param>
 | 
						||
        /// <param name="projectId"></param>
 | 
						||
        /// <param name="isShowPlease"></param>
 | 
						||
        public static void InitUnitWorkNameDropDownList(FineUIPro.DropDownList dropName, string projectId, bool isShowPlease)
 | 
						||
        {
 | 
						||
            var unitWorks = from x in Funs.DB.WBS_UnitWork
 | 
						||
                            where x.ProjectId == projectId && (x.SuperUnitWork == null || x.SuperUnitWork == "0")
 | 
						||
                            orderby x.UnitWorkCode
 | 
						||
                            select new
 | 
						||
                            {
 | 
						||
                                x.UnitWorkId,
 | 
						||
                                UnitWorkName = GetUnitWorkALLName(x.UnitWorkId)
 | 
						||
                            };
 | 
						||
 | 
						||
            dropName.DataValueField = "UnitWorkName";
 | 
						||
            dropName.DataTextField = "UnitWorkName";
 | 
						||
            dropName.DataSource = unitWorks;
 | 
						||
            dropName.DataBind();
 | 
						||
            if (isShowPlease)
 | 
						||
            {
 | 
						||
                Funs.FineUIPleaseSelect(dropName);
 | 
						||
            }
 | 
						||
        }
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 获取单位工程名称
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="unitWorkId"></param>
 | 
						||
        /// <returns></returns>
 | 
						||
        public static string GetUnitWorkALLName(string unitWorkId)
 | 
						||
        {
 | 
						||
            string name = string.Empty;
 | 
						||
            var getu = Funs.DB.WBS_UnitWork.FirstOrDefault(x => x.UnitWorkId == unitWorkId && (x.SuperUnitWork == null || x.SuperUnitWork == "0"));
 | 
						||
            if (getu != null)
 | 
						||
            {
 | 
						||
                if (!string.IsNullOrEmpty(getu.ProjectType))
 | 
						||
                {
 | 
						||
                    name = getu.UnitWorkName + "(" + Funs.GetUnitWorkType(getu.ProjectType) + ")";
 | 
						||
                }
 | 
						||
                else
 | 
						||
                {
 | 
						||
                    name = getu.UnitWorkName;
 | 
						||
                }
 | 
						||
            }
 | 
						||
            return name;
 | 
						||
        }
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 获取主项及设计专业名称
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="unitWorkId"></param>
 | 
						||
        /// <returns></returns>
 | 
						||
        public static string GetMainItemAndDesignProfessionalName(string str, string projectId)
 | 
						||
        {
 | 
						||
            string name = string.Empty;
 | 
						||
            Model.SGGLDB db = Funs.DB;
 | 
						||
            var mainItems = from x in db.ProjectData_MainItem where x.ProjectId == projectId select x;
 | 
						||
            var designProfessionals = from x in db.Base_DesignProfessional select x;
 | 
						||
            if (!string.IsNullOrEmpty(str))
 | 
						||
            {
 | 
						||
                string[] ids = str.Split(',');
 | 
						||
                string mainItemId = string.Empty;
 | 
						||
                foreach (var id in ids)
 | 
						||
                {
 | 
						||
                    string[] strs = id.Split('|');
 | 
						||
                    if (mainItemId != strs[0])   //新的主项内容
 | 
						||
                    {
 | 
						||
                        if (!string.IsNullOrEmpty(name))
 | 
						||
                        {
 | 
						||
                            name = name.Substring(0, name.Length - 1) + "),";
 | 
						||
                        }
 | 
						||
                        var mainItem = mainItems.FirstOrDefault(x => x.MainItemId == strs[0]);
 | 
						||
                        if (mainItem != null)
 | 
						||
                        {
 | 
						||
                            name += mainItem.MainItemName + "(";
 | 
						||
                        }
 | 
						||
                        var designProfessional = designProfessionals.FirstOrDefault(x => x.DesignProfessionalId == strs[1]);
 | 
						||
                        if (designProfessional != null)
 | 
						||
                        {
 | 
						||
                            name += designProfessional.ProfessionalName + ",";
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
                    else
 | 
						||
                    {
 | 
						||
                        var designProfessional = designProfessionals.FirstOrDefault(x => x.DesignProfessionalId == strs[1]);
 | 
						||
                        if (designProfessional != null)
 | 
						||
                        {
 | 
						||
                            name += designProfessional.ProfessionalName + ",";
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
                    mainItemId = strs[0];
 | 
						||
                }
 | 
						||
                if (!string.IsNullOrEmpty(name))
 | 
						||
                {
 | 
						||
                    name = name.Substring(0, name.Length - 1) + ")";
 | 
						||
                }
 | 
						||
            }
 | 
						||
            return name;
 | 
						||
        }
 | 
						||
 | 
						||
        public static string GetUnitWorkIdsByUnitWorkNames(string projectId,string unitWorks)
 | 
						||
        {
 | 
						||
            if (!string.IsNullOrEmpty(unitWorks))
 | 
						||
            {
 | 
						||
                string[] ins = unitWorks.Split(',');
 | 
						||
                string unitIds = string.Empty;
 | 
						||
                foreach (string s in ins)
 | 
						||
                {
 | 
						||
                    var q = GetUnitWorkByUnitWorkName(projectId, s.Trim()).UnitWorkId;
 | 
						||
                    unitIds += q + ",";
 | 
						||
                }
 | 
						||
                return unitIds.Substring(0, unitIds.LastIndexOf(','));
 | 
						||
            }
 | 
						||
            else
 | 
						||
            {
 | 
						||
                return string.Empty;
 | 
						||
            }
 | 
						||
        }
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 是否可增加子级
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="postName"></param>
 | 
						||
        /// <returns>true-可以,false-不可以</returns>
 | 
						||
        public static bool IsCanAddUnitWork(string unitWorkId)
 | 
						||
        {
 | 
						||
            var unitWork = Funs.DB.WBS_UnitWork.FirstOrDefault(x => x.UnitWorkId == unitWorkId);
 | 
						||
            if (unitWork != null)
 | 
						||
            {
 | 
						||
                if (unitWork.IsChild == true)
 | 
						||
                {
 | 
						||
                    return false;
 | 
						||
                }
 | 
						||
                else
 | 
						||
                {
 | 
						||
                    return true;
 | 
						||
                }
 | 
						||
            }
 | 
						||
            else
 | 
						||
            {
 | 
						||
                return true;
 | 
						||
            }
 | 
						||
        }
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 是否存在子级单位工程
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="superUnitWork"></param>
 | 
						||
        /// <returns></returns>
 | 
						||
        public static bool IsExitsUnitWorkBySuperUnitWork(string superUnitWork)
 | 
						||
        {
 | 
						||
            return (from x in Funs.DB.WBS_UnitWork where x.SuperUnitWork == superUnitWork select x).Count() > 0;
 | 
						||
        }
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 根据单位工程获取子单位工程信息
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="supUnitWork"></param>
 | 
						||
        /// <returns></returns>
 | 
						||
        public static List<Model.WBS_UnitWork> GetUnitWorksBySupUnitWork(string supUnitWork)
 | 
						||
        {
 | 
						||
            return (from x in Funs.DB.WBS_UnitWork where x.SuperUnitWork == supUnitWork select x).ToList();
 | 
						||
        }
 | 
						||
    }
 | 
						||
}
 |