SGGL_JT/SUBQHSE/WebAPI/Controllers/DataSync/ProjectDataSyncController.cs

551 lines
24 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 = "项目idDataSources未查询到数据请检查是否正确。";
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);
}
}
}
}
}