using System; using System.Collections.Generic; using System.Configuration; using System.IO; using System.Linq; using System.Net; using System.Net.Http; using System.Security.Policy; using System.Web.Http; using BLL; using Model; namespace WebAPI.Controllers.DataSync { /// /// 项目数据同步 /// public class ProjectDataSyncController : ApiController { /// /// 项目同步接口 /// /// /// [HttpPost] public Model.ResponeData saveProject([FromBody] Base_ProjectDto dto) { using (var db = new Model.SUBQHSEDB(Funs.ConnString)) { var responeData = new Model.ResponeData(); var mapper = EmitMapper.ObjectMapperManager.DefaultInstance.GetMapper(); var model = mapper.Map(dto); #region 判断是否未填 if (string.IsNullOrEmpty(model.ProjectName)) { responeData.code = 0; responeData.message = "项目名称(ProjectName)不能为空"; return responeData; } if (string.IsNullOrEmpty(model.ProjectAttribute)) { responeData.code = 0; responeData.message = "项目属性(ProjectAttribute)不能为空"; return responeData; } if (string.IsNullOrEmpty(model.ProjectCode)) { responeData.code = 0; responeData.message = "项目编号(ProjectCode)不能为空"; return responeData; } if (string.IsNullOrEmpty(model.ShortName)) { responeData.code = 0; responeData.message = "项目简称(ShortName)不能为空"; return responeData; } if (string.IsNullOrEmpty(model.UnitId)) { responeData.code = 0; responeData.message = "所属单位(UnitId)不能为空"; return responeData; } else { //判断userid是否有数据 var umodel = Funs.DB.Base_Unit.FirstOrDefault(x => x.UnitName == model.UnitId); if (umodel == null) { responeData.code = 0; responeData.message = "所属单位名称未查询到数据,请检查是否正确。"; return responeData; } else { model.UnitId = umodel.UnitId; } } if (string.IsNullOrEmpty(model.ProjectState)) { responeData.code = 0; responeData.message = "项目状态(ProjectState)不能为空"; return responeData; } var oldProject1 = Funs.DB.Base_Project.FirstOrDefault(x => x.ProjectId != (model.ProjectId ?? "") && x.ProjectCode == model.ProjectCode); if (oldProject1 != null) { responeData.code = 0; responeData.message = "项目编号已存在"; return responeData; } var oldProject2 = Funs.DB.Base_Project.FirstOrDefault(x => x.ProjectId != (model.ProjectId ?? "") && x.ProjectName == model.ProjectName); if (oldProject2 != null) { responeData.code = 0; responeData.message = "项目名称已存在"; return responeData; } #endregion try { model.ProjectId = SQLHelper.GetNewID(); ; ProjectService.AddProject(model); // 初始化焊接环境变量设置 BLL.Project_SysSetService.InsertHjglInit(model.ProjectId); responeData.message = "项目同步成功。"; } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } } /// /// 保存单位工程 /// /// /// [HttpPost] public Model.ResponeData saveUnitWork(WBS_UnitWorkDto dto) { var responeData = new Model.ResponeData(); try { var mapper = EmitMapper.ObjectMapperManager.DefaultInstance.GetMapper(); var model = mapper.Map(dto); #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 = "项目名称不能为空"; return responeData; } else { //判断projectid是否有数据 var pmodel = Funs.DB.Base_Project.FirstOrDefault(x => x.ProjectName == model.ProjectId); if (pmodel == null) { responeData.code = 0; responeData.message = "项目名称未查询到数据,请检查是否正确。"; return responeData; } else { model.ProjectId = pmodel.ProjectId; } } #endregion 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 responeData.message = "单位工程同步成功。"; } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } #region 保存用户 /// /// 保存用户 /// /// /// public ResponeData saveUser(Sys_UserDto dto) { var responeData = new Model.ResponeData(); try { var mapper = EmitMapper.ObjectMapperManager.DefaultInstance.GetMapper(); var model = mapper.Map(dto); #region 判断 if (string.IsNullOrEmpty(model.UnitId)) { responeData.code = 0; responeData.message = "单位名称不能为空。"; return responeData; } else { var umodel = Funs.DB.Base_Unit.FirstOrDefault(x => x.UnitName == model.UnitId); if (umodel == null) { responeData.code = 0; responeData.message = "单位名称未查询到数据,请检查是否正确。"; return responeData; } else { model.UnitId = umodel.UnitId; } } var q = Funs.DB.Sys_User.FirstOrDefault(x => x.Account == model.Account && (x.UserId != model.UserId || (model.UserId == null && x.UserId != null))); if (q != null) { responeData.code = 0; responeData.message = "输入的账号已存在。"; return responeData; } if (!string.IsNullOrEmpty(model.UserCode)) { var q2 = Funs.DB.Sys_User.FirstOrDefault(x => x.UserCode == model.UserCode && (x.UserId != model.UserId || (model.UserId == null && x.UserId != null))); if (q2 != null) { responeData.code = 0; responeData.message = "输入的编号已存在。"; return responeData; } } if (!string.IsNullOrEmpty(model.IdentityCard) && BLL.UserService.IsExistUserIdentityCard(model.UserId, model.IdentityCard) == true) { responeData.code = 0; responeData.message = "输入的身份证号码已存在。"; return responeData; } if (string.IsNullOrEmpty(model.DataSources)) { responeData.code = 0; responeData.message = "项目名称不能为空"; return responeData; } else { //判断projectid是否有数据 var pmodel = Funs.DB.Base_Project.FirstOrDefault(x => x.ProjectName == model.DataSources); if (pmodel == null) { responeData.code = 0; responeData.message = "该项目名称未查询到数据,请检查是否正确。"; return responeData; } else { model.DataSources = pmodel.ProjectId; } } #endregion model.RawPassword = UserService.getInitialPassword(model.UnitId, model.IdentityCard); ; model.Password = Funs.EncryptionPassword(model.RawPassword); model.UserId = SQLHelper.GetNewID(typeof(Model.Sys_User)); model.IsPost=true; UserService.AddUser(model); Model.Project_ProjectUser newProjectUser = new Model.Project_ProjectUser { ProjectUserId = SQLHelper.GetNewID(typeof(Model.Project_ProjectUser)), ProjectId = model.DataSources, UserId = model.UserId, UnitId = model.UnitId, IsPost = true, MainCNProfessionalId = model.MainCNProfessionalId, ViceCNProfessionalId = model.ViceCNProfessionalId }; newProjectUser.RoleId = ""; BLL.ProjectUserService.AddProjectUser(newProjectUser); this.SetWorkPost(newProjectUser); responeData.message = "项目用户同步成功。"; } catch (Exception ex) { responeData.code = 0; responeData.message = ex.Message; } return responeData; } /// /// 更新用户的项目岗位 /// /// private void SetWorkPost(Model.Project_ProjectUser projectUser) { var user = BLL.UserService.GetUserByUserId(projectUser.UserId); if (user != null && !string.IsNullOrEmpty(user.IdentityCard)) { var sitePerson = BLL.PersonService.GetPersonByIdentityCard(projectUser.ProjectId, user.IdentityCard); if (sitePerson != null) { sitePerson.WorkPostId = null; sitePerson.MainCNProfessionalId = projectUser.MainCNProfessionalId; sitePerson.ViceCNProfessionalId = projectUser.ViceCNProfessionalId; BLL.PersonService.UpdatePerson(sitePerson); } else { Model.SitePerson_Person newPerson = new Model.SitePerson_Person { PersonId = SQLHelper.GetNewID(typeof(Model.SitePerson_Person)), PersonName = user.UserName, Sex = user.Sex, IdentityCard = user.IdentityCard, ProjectId = projectUser.ProjectId, UnitId = user.UnitId, IsUsed = true, MainCNProfessionalId = projectUser.MainCNProfessionalId, ViceCNProfessionalId = projectUser.ViceCNProfessionalId, }; newPerson.WorkPostId = null; BLL.PersonService.AddPerson(newPerson); } } } #endregion /// /// 保存项目单位 /// /// /// public ResponeData saveUnit(Base_UnitDto dto) { var responeData = new Model.ResponeData(); try { var mapper = EmitMapper.ObjectMapperManager.DefaultInstance.GetMapper(); var model = mapper.Map(dto); #region 判断 if (string.IsNullOrEmpty(model.UnitCode)) { responeData.code = 0; responeData.message = "单位代码(UnitCode)不能为空。"; return responeData; } if (string.IsNullOrEmpty(model.UnitName)) { responeData.code = 0; responeData.message = "单位名称(UnitName)不能为空。"; return responeData; } if (string.IsNullOrEmpty(model.DataSources)) { responeData.code = 0; responeData.message = "项目名称(DataSources)不能为空。"; return responeData; } else { //判断projectid是否有数据 var pmodel = Funs.DB.Base_Project.FirstOrDefault(x => x.ProjectName == model.DataSources); if (pmodel == null) { responeData.code = 0; responeData.message = "项目id(DataSources)未查询到数据,请检查是否正确。"; return responeData; } else { model.DataSources = pmodel.ProjectId; } } //判断单位名称 或者 代码是否重复 var UnitModel = Funs.DB.Base_Unit.FirstOrDefault(x => x.UnitName == model.UnitName); if (UnitModel!=null) { responeData.code = 0; responeData.message = "单位名称重复,不允许添加重复数据。"; return responeData; } UnitModel = Funs.DB.Base_Unit.FirstOrDefault(x => x.UnitCode == model.UnitCode); if (UnitModel != null) { responeData.code = 0; responeData.message = "单位代码重复,不允许添加重复数据。"; return responeData; } #endregion model.UnitId = SQLHelper.GetNewID(typeof(Model.Base_Unit)); BLL.UnitService.AddUnit(model); Model.Project_ProjectUnit newProjectUnit = new Model.Project_ProjectUnit { ProjectId = model.DataSources, UnitId = model.UnitId, InTime = System.DateTime.Now }; BLL.ProjectUnitService.AddProjectUnit(newProjectUnit); responeData.message = "保存成功!"; } 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); } } } } }