using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; using System.Web.Http; using BLL; using Model; namespace WebAPI.Controllers.DataPenetrate { /// /// 单位工程控制器 /// public class UnitWorkPenetrateController : ApiController { /// /// 根据ProjectId查询单位工程信息 /// /// /// public Model.ResponeData getInfoByProjectId(string projectIds="") { string projectId = projectIds; var responeData = new Model.ResponeData(); try { if (string.IsNullOrEmpty(projectId)) { responeData.code = 0; responeData.message = "项目id不能为空"; return responeData; } var getDataList = Funs.DB.WBS_UnitWork.Where(x => x.ProjectId==projectId) .Select(s => new WBS_UnitWork_new() { UnitWorkId=s.UnitWorkId, UnitWorkCode=s.UnitWorkCode, UnitWorkName=s.UnitWorkName, ProjectId=s.ProjectId }) .ToList(); responeData.data = new { getDataList }; if (getDataList.Count == 0) { responeData.code = 1; responeData.message = "根据条件未查询到数据。"; return responeData; } else { responeData.code = 0; responeData.message = "查询成功。"; return responeData; } } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } public class WBS_UnitWork_new { public string UnitWorkId { get; set; } public string UnitWorkCode { get; set; } public string UnitWorkName { get; set; } public string ProjectId { get; set; } } /// /// 保存单位工程 /// /// /// [HttpPost] public Model.ResponeData saveUnitWork(WBS_UnitWork model) { var responeData = new Model.ResponeData(); try { #region 判断 if (string.IsNullOrEmpty(model.UnitWorkCode)) { responeData.code = 0; responeData.message = "单位工程编码不能为空"; return responeData; } if (string.IsNullOrEmpty(model.UnitWorkName)) { responeData.code = 0; responeData.message = "单位工程名称不能为空"; return responeData; } if (string.IsNullOrEmpty(model.ProjectId)) { responeData.code = 0; responeData.message = "项目id不能为空"; return responeData; } else { //判断projectid是否有数据 var pmodel = Funs.DB.Base_Project.FirstOrDefault(x => x.ProjectId == model.ProjectId); if (pmodel==null) { responeData.code = 0; responeData.message = "项目id未查询到数据,请检查是否正确。"; return responeData; } } #endregion if (string.IsNullOrEmpty(model.UnitWorkId)) { model.UnitWorkId = SQLHelper.GetNewID(typeof(Model.WBS_UnitWork)); BLL.UnitWorkService.AddUnitWork(model); #region 拷贝WBS内容 //拷贝分部及子分部 var divisions1 = from x in Funs.DB.WBS_Division where x.SuperDivisionId == null select x; foreach (var d1 in divisions1) { Model.WBS_DivisionProject newDivisionProject = new Model.WBS_DivisionProject(); newDivisionProject.DivisionProjectId = SQLHelper.GetNewID(typeof(Model.WBS_DivisionProject)); newDivisionProject.ProjectId = model.ProjectId; newDivisionProject.DivisionCode = d1.DivisionCode; newDivisionProject.DivisionName = d1.DivisionName; newDivisionProject.SortIndex = d1.SortIndex; newDivisionProject.SuperDivisionId = d1.SuperDivisionId; newDivisionProject.CNProfessionalId = d1.CNProfessionalId; newDivisionProject.UnitWorkId = model.UnitWorkId; newDivisionProject.OldDivisionId = d1.DivisionId; newDivisionProject.SubItemType = d1.SubItemType; BLL.DivisionProjectService.AddDivisionProject(newDivisionProject); //分部 List divisions2 = (from x in Funs.DB.WBS_Division where x.SuperDivisionId == d1.DivisionId select x).ToList(); if (divisions2.Count() > 0) { this.InsertDivisionDetail(divisions2, newDivisionProject.DivisionProjectId, model.UnitWorkId,model.ProjectId); } } //拷贝分项 var breakdowns = from x in Funs.DB.WBS_Breakdown select x; foreach (var b in breakdowns) { Model.WBS_BreakdownProject bp = new Model.WBS_BreakdownProject(); bp.BreakdownProjectId = SQLHelper.GetNewID(typeof(Model.WBS_BreakdownProject)); bp.ProjectId = model.ProjectId; bp.BreakdownCode = b.BreakdownCode; bp.BreakdownName = b.BreakdownName; bp.DivisionProjectId = (from x in Funs.DB.WBS_DivisionProject where x.OldDivisionId == b.DivisionId && x.UnitWorkId == model.UnitWorkId select x.DivisionProjectId).FirstOrDefault(); bp.Basis = b.Basis; bp.CheckPoints = b.CheckPoints; bp.RecordAndCode = b.RecordAndCode; bp.Class = b.Class; bp.SortIndex = b.SortIndex; bp.Remark = b.Remark; bp.ModelURL = b.ModelURL; bp.UnitWorkId = model.UnitWorkId; bp.IsAcceptance = b.IsAcceptance; bp.IsYellow = b.IsYellow; bp.WuHuan = b.WuHuan; bp.JianLi = b.JianLi; bp.FenBao = b.FenBao; bp.YeZhu = b.YeZhu; bp.SourceBreakdownId = b.BreakdownId; bp.CheckAcceptType = b.CheckAcceptType; BLL.BreakdownProjectService.AddBreakdownProject(bp); } #endregion #region 拷贝资料库内容 Model.DataBase_DataTypeProject dataTypeProject = BLL.DataTypeProjectService.GetDataTypeProjectBySourceDataTypeId(Const.DataTypeNewConstructId, model.ProjectId); List childDataTypes = BLL.DataTypeService.GetDataTypesBySuperDataTypeId(Const.DataTypeNewConstructId); if (childDataTypes.Count > 0) { if (dataTypeProject != null) { InsertDataTypeDetail(childDataTypes, dataTypeProject.DataTypeProjectId, model.ProjectId, model.UnitWorkId); } } #endregion } else { var umodel = Funs.DB.WBS_UnitWork.FirstOrDefault(x => x.UnitWorkId == model.UnitWorkId); if (umodel==null) { responeData.code = 0; responeData.message = "单位工程id(UnitWorkId)未查询到数据,无法修改,请检查是否正确。"; return responeData; } BLL.UnitWorkService.UpdateUnitWork(model); var divisionProject = Funs.DB.WBS_DivisionProject.FirstOrDefault(x => x.UnitWorkId == model.UnitWorkId); if (divisionProject == null) { #region 拷贝WBS内容 //拷贝分部及子分部 var divisions1 = from x in Funs.DB.WBS_Division where x.SuperDivisionId == null select x; foreach (var d1 in divisions1) { Model.WBS_DivisionProject newDivisionProject = new Model.WBS_DivisionProject(); newDivisionProject.DivisionProjectId = SQLHelper.GetNewID(typeof(Model.WBS_DivisionProject)); newDivisionProject.ProjectId = model.ProjectId; newDivisionProject.DivisionCode = d1.DivisionCode; newDivisionProject.DivisionName = d1.DivisionName; newDivisionProject.SortIndex = d1.SortIndex; newDivisionProject.SuperDivisionId = d1.SuperDivisionId; newDivisionProject.CNProfessionalId = d1.CNProfessionalId; newDivisionProject.UnitWorkId = model.UnitWorkId; newDivisionProject.OldDivisionId = d1.DivisionId; newDivisionProject.SubItemType = d1.SubItemType; BLL.DivisionProjectService.AddDivisionProject(newDivisionProject); //分部 List divisions2 = (from x in Funs.DB.WBS_Division where x.SuperDivisionId == d1.DivisionId select x).ToList(); if (divisions2.Count() > 0) { this.InsertDivisionDetail(divisions2, newDivisionProject.DivisionProjectId, model.UnitWorkId, model.ProjectId); } } //拷贝分项 var breakdowns = from x in Funs.DB.WBS_Breakdown select x; foreach (var b in breakdowns) { Model.WBS_BreakdownProject bp = new Model.WBS_BreakdownProject(); bp.BreakdownProjectId = SQLHelper.GetNewID(typeof(Model.WBS_BreakdownProject)); bp.ProjectId = model.ProjectId; bp.BreakdownCode = b.BreakdownCode; bp.BreakdownName = b.BreakdownName; bp.DivisionProjectId = (from x in Funs.DB.WBS_DivisionProject where x.OldDivisionId == b.DivisionId && x.UnitWorkId == model.UnitWorkId select x.DivisionProjectId).FirstOrDefault(); bp.Basis = b.Basis; bp.CheckPoints = b.CheckPoints; bp.RecordAndCode = b.RecordAndCode; bp.Class = b.Class; bp.SortIndex = b.SortIndex; bp.Remark = b.Remark; bp.ModelURL = b.ModelURL; bp.UnitWorkId = model.UnitWorkId; bp.IsAcceptance = b.IsAcceptance; bp.IsYellow = b.IsYellow; bp.WuHuan = b.WuHuan; bp.JianLi = b.JianLi; bp.FenBao = b.FenBao; bp.YeZhu = b.YeZhu; bp.SourceBreakdownId = b.BreakdownId; bp.CheckAcceptType = b.CheckAcceptType; BLL.BreakdownProjectService.AddBreakdownProject(bp); } #endregion } } } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } /// /// 循环拷贝子级分部 /// /// private void InsertDivisionDetail(List divisions, string superDivisionId, string unitWorkId,string projectid) { foreach (var d in divisions) { Model.WBS_DivisionProject newDivisionProject = new Model.WBS_DivisionProject(); newDivisionProject.DivisionProjectId = SQLHelper.GetNewID(typeof(Model.WBS_DivisionProject)); newDivisionProject.ProjectId = projectid; newDivisionProject.DivisionCode = d.DivisionCode; newDivisionProject.DivisionName = d.DivisionName; newDivisionProject.SortIndex = d.SortIndex; newDivisionProject.SuperDivisionId = superDivisionId; newDivisionProject.CNProfessionalId = d.CNProfessionalId; newDivisionProject.UnitWorkId = unitWorkId; newDivisionProject.OldDivisionId = d.DivisionId; newDivisionProject.SubItemType = d.SubItemType; BLL.DivisionProjectService.AddDivisionProject(newDivisionProject); //子级分部 List divisions2 = (from x in Funs.DB.WBS_Division where x.SuperDivisionId == d.DivisionId select x).ToList(); if (divisions2.Count() > 0) { this.InsertDivisionDetail(divisions2, newDivisionProject.DivisionProjectId, unitWorkId, projectid); } } } /// /// 循环拷贝子级类别 /// /// private void InsertDataTypeDetail(List dataTypes, string superDataTypeId, string projectId, string unitWorkId) { foreach (var d in dataTypes) { Model.DataBase_DataTypeProject newDataTypeProject = new Model.DataBase_DataTypeProject(); newDataTypeProject.DataTypeProjectId = SQLHelper.GetNewID(typeof(Model.DataBase_DataTypeProject)); newDataTypeProject.ProjectId = projectId; newDataTypeProject.DataTypeCode = d.DataTypeCode; newDataTypeProject.DataTypeName = d.DataTypeName; newDataTypeProject.SuperDataTypeId = superDataTypeId; newDataTypeProject.SortIndex = d.SortIndex; newDataTypeProject.Pages = d.Pages; newDataTypeProject.Remark = d.Remark; newDataTypeProject.IsRelatedWBS = d.IsRelatedWBS; newDataTypeProject.SourceDataTypeId = d.DataTypeId; newDataTypeProject.UnitWorkId = unitWorkId; BLL.DataTypeProjectService.AddDataTypeProject(newDataTypeProject); List childDataTypes = BLL.DataTypeService.GetDataTypesBySuperDataTypeId(d.DataTypeId); if (childDataTypes.Count > 0) { InsertDataTypeDetail(childDataTypes, newDataTypeProject.DataTypeProjectId, projectId, unitWorkId); } } } } }