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);
}
}
}
}
}