551 lines
24 KiB
C#
551 lines
24 KiB
C#
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
|
||
{
|
||
/// <summary>
|
||
/// 项目数据同步
|
||
/// </summary>
|
||
public class ProjectDataSyncController : ApiController
|
||
{
|
||
/// <summary>
|
||
/// 项目同步接口
|
||
/// </summary>
|
||
/// <param name="dto"></param>
|
||
/// <returns></returns>
|
||
[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<Base_ProjectDto, Model.Base_Project>();
|
||
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;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 保存单位工程
|
||
/// </summary>
|
||
/// <param name="dto"></param>
|
||
/// <returns></returns>
|
||
[HttpPost]
|
||
public Model.ResponeData saveUnitWork(WBS_UnitWorkDto dto)
|
||
{
|
||
var responeData = new Model.ResponeData();
|
||
try
|
||
{
|
||
var mapper = EmitMapper.ObjectMapperManager.DefaultInstance.GetMapper<WBS_UnitWorkDto, Model.WBS_UnitWork>();
|
||
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<Model.WBS_Division> 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<Model.DataBase_DataType> 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 保存用户
|
||
/// <summary>
|
||
/// 保存用户
|
||
/// </summary>
|
||
/// <param name="dto"></param>
|
||
/// <returns></returns>
|
||
public ResponeData saveUser(Sys_UserDto dto)
|
||
{
|
||
var responeData = new Model.ResponeData();
|
||
try
|
||
{
|
||
var mapper = EmitMapper.ObjectMapperManager.DefaultInstance.GetMapper<Sys_UserDto, Model.Sys_User>();
|
||
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;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 更新用户的项目岗位
|
||
/// </summary>
|
||
/// <param name="projectUser"></param>
|
||
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
|
||
|
||
/// <summary>
|
||
/// 保存项目单位
|
||
/// </summary>
|
||
/// <param name="dto"></param>
|
||
/// <returns></returns>
|
||
public ResponeData saveUnit(Base_UnitDto dto)
|
||
{
|
||
var responeData = new Model.ResponeData();
|
||
try
|
||
{
|
||
var mapper = EmitMapper.ObjectMapperManager.DefaultInstance.GetMapper<Base_UnitDto, Model.Base_Unit>();
|
||
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;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 循环拷贝子级分部
|
||
/// </summary>
|
||
/// <param name="divisions"></param>
|
||
/// <param name="superDivisionId"></param>
|
||
/// <param name="unitWorkId"></param>
|
||
/// <param name="projectid"></param>
|
||
private void InsertDivisionDetail(List<Model.WBS_Division> 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<Model.WBS_Division> 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);
|
||
}
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 循环拷贝子级类别
|
||
/// </summary>
|
||
/// <param name="dataTypes"></param>
|
||
/// <param name="superDataTypeId"></param>
|
||
/// <param name="projectId"></param>
|
||
/// <param name="unitWorkId"></param>
|
||
private void InsertDataTypeDetail(List<Model.DataBase_DataType> 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<Model.DataBase_DataType> childDataTypes = BLL.DataTypeService.GetDataTypesBySuperDataTypeId(d.DataTypeId);
|
||
if (childDataTypes.Count > 0)
|
||
{
|
||
InsertDataTypeDetail(childDataTypes, newDataTypeProject.DataTypeProjectId, projectId, unitWorkId);
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
|
||
}
|
||
} |