1
This commit is contained in:
@@ -0,0 +1,468 @@
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Configuration;
|
||||
using System.IO;
|
||||
using System.Net.Http;
|
||||
using System.Threading.Tasks;
|
||||
using Model;
|
||||
using Newtonsoft.Json;
|
||||
using RestSharp;
|
||||
using System.Net;
|
||||
|
||||
|
||||
namespace BLL
|
||||
{
|
||||
public class APIHazardRegisterSyncService
|
||||
{
|
||||
#region 根据项目、单位获取安全检查列表分页
|
||||
|
||||
public static List<Model.HazardRegisterSyncItem> GetHazardRegisterLitsByprojectIdUnitIdPage(string projectId,
|
||||
string unitId, string dataId = "")
|
||||
{
|
||||
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
|
||||
{
|
||||
var list = from x in db.HSSE_Hazard_HazardRegister where x.ProjectId == projectId select x;
|
||||
if (!string.IsNullOrEmpty(unitId))
|
||||
{
|
||||
list = list.Where(x => x.ResponsibleUnit == unitId);
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(dataId))
|
||||
{
|
||||
list = list.Where(x => x.HazardRegisterId == dataId);
|
||||
}
|
||||
|
||||
var dataList = (from x in list
|
||||
join ht in db.HSSE_Hazard_HazardRegisterTypes on x.RegisterTypesId equals ht.RegisterTypesId into htTemp
|
||||
from ht in htTemp.DefaultIfEmpty()
|
||||
join uw in db.WBS_UnitWork on x.Place equals uw.UnitWorkId into uwTemp
|
||||
from uw in uwTemp.DefaultIfEmpty()
|
||||
join u1 in db.Person_Persons on x.ResponsibleMan equals u1.PersonId into u1Temp
|
||||
from u1 in u1Temp.DefaultIfEmpty()
|
||||
join u2 in db.Person_Persons on x.CheckManId equals u2.PersonId into u2Temp
|
||||
from u2 in u2Temp.DefaultIfEmpty()
|
||||
join u3 in db.Person_Persons on x.ConfirmMan equals u3.PersonId into u3Temp
|
||||
from u3 in u3Temp.DefaultIfEmpty()
|
||||
join u4 in db.Person_Persons on x.ResponsibleMan2 equals u4.PersonId into u4Temp
|
||||
from u4 in u4Temp.DefaultIfEmpty()
|
||||
select new HazardRegisterSyncItem
|
||||
{
|
||||
HazardRegisterId = x.HazardRegisterId,
|
||||
HazardCode = x.HazardCode,
|
||||
RegisterDate = x.RegisterDate,
|
||||
RegisterDef = x.RegisterDef,
|
||||
Rectification = x.Rectification,
|
||||
Place = x.Place,
|
||||
PlaceName = uw.UnitWorkName,
|
||||
ResponsibleUnit = x.ResponsibleUnit,
|
||||
Observer = x.Observer,
|
||||
RectifiedDate = x.RectifiedDate,
|
||||
AttachUrl = x.AttachUrl,
|
||||
ProjectId = x.ProjectId,
|
||||
States = x.States,
|
||||
IsEffective = x.IsEffective,
|
||||
ResponsibleMan = x.ResponsibleMan,
|
||||
ResponsibleManName = u1.PersonName,
|
||||
CheckManId = x.CheckManId,
|
||||
CheckManName = u2.PersonName,
|
||||
CheckTime = x.CheckTime,
|
||||
RectificationPeriod = x.RectificationPeriod,
|
||||
ImageUrl = x.ImageUrl,
|
||||
RectificationImageUrl = x.RectificationImageUrl,
|
||||
RectificationTime = x.RectificationTime,
|
||||
ConfirmMan = x.ConfirmMan,
|
||||
ConfirmManName = u3.PersonName,
|
||||
ConfirmDate = x.ConfirmDate,
|
||||
HandleIdea = x.HandleIdea,
|
||||
CutPayment = x.CutPayment,
|
||||
ProblemTypes = x.ProblemTypes,
|
||||
RegisterTypesId = x.RegisterTypesId,
|
||||
RegisterTypesName = ht.RegisterTypesName,
|
||||
CheckCycle = x.CheckCycle,
|
||||
CheckItemDetailId = x.CheckItemDetailId,
|
||||
SupCheckItemSetId = x.SupCheckItemSetId,
|
||||
CheckItemSetId = x.CheckItemSetId,
|
||||
CheckSpecialId = x.CheckSpecialId,
|
||||
InstallationId = x.InstallationId,
|
||||
SafeSupervisionId = x.SafeSupervisionId,
|
||||
ResponsibleMan2 = x.ResponsibleMan2,
|
||||
ResponsibleMan2Name = u4.PersonName,
|
||||
SafeSupervisionIsOK = x.SafeSupervisionIsOK,
|
||||
GpsLocation = x.GpsLocation,
|
||||
IsWx = x.IsWx,
|
||||
DIC_ID = x.DIC_ID,
|
||||
CCManIds = x.CCManIds,
|
||||
ResultType = x.ResultType,
|
||||
ResultId = x.ResultId,
|
||||
Requirements = x.Requirements,
|
||||
Risk_Level = x.HazardValue,
|
||||
ControlId = x.ControlId,
|
||||
DataSource = "1",
|
||||
}).ToList();
|
||||
|
||||
return dataList;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region 拉取项目安全检查数据
|
||||
|
||||
public static string getHazardRegisterLists(string projectId = "")
|
||||
{
|
||||
int code = 0;
|
||||
string message = "";
|
||||
try
|
||||
{
|
||||
string CollCropCode = string.Empty;
|
||||
string unitId = string.Empty;
|
||||
var thisUnit = CommonService.GetIsThisUnit(); //当前单位
|
||||
if (thisUnit != null)
|
||||
{
|
||||
CollCropCode = thisUnit.CollCropCode; //社会统一信用代码
|
||||
unitId = thisUnit.UnitId;
|
||||
}
|
||||
|
||||
var ProjectList = (from x in Funs.DB.Base_Project
|
||||
where x.SubjectUnit != null &&
|
||||
x.SubjectProject != null
|
||||
select x).ToList();
|
||||
|
||||
if (!string.IsNullOrEmpty(projectId))
|
||||
{
|
||||
ProjectList = ProjectList.Where(x => x.ProjectId == projectId).ToList();
|
||||
}
|
||||
|
||||
if (ProjectList.Count > 0)
|
||||
{
|
||||
foreach (var project in ProjectList)
|
||||
{
|
||||
string SubjectUnitId = project.SubjectUnit; //集团的单位id
|
||||
string SubjectProjectId = project.SubjectProject; //集团的项目id
|
||||
//获取对应单位的apiurl地址
|
||||
var Url = BLL.UnitService.getUnitApiUrlByUnitId(SubjectUnitId);
|
||||
var ApiUrl = "";
|
||||
var WebUrl = "";
|
||||
if (!string.IsNullOrEmpty(Url))
|
||||
{
|
||||
var urls = Url.Split(',');
|
||||
ApiUrl = urls[0];
|
||||
if (urls.Length > 1)
|
||||
{
|
||||
WebUrl = urls[1];
|
||||
}
|
||||
}
|
||||
|
||||
// CollCropCode = "91420000177570439L"; //三化建 测试使用
|
||||
// SubjectProjectId = "c7ade79e-7646-4c59-a8fd-020a7e3138c6";//测试使用
|
||||
|
||||
string url =
|
||||
"/api/HazardRegisterSync/getHazardRegisterListByProjectIdAndCollCropCode?projectId=" +
|
||||
SubjectProjectId + "&collCropCode=" + CollCropCode;
|
||||
string baseurl = ApiUrl + url;
|
||||
string contenttype = "application/json;charset=unicode";
|
||||
var strJosn = APIGetHttpService.Http(baseurl, "GET", contenttype, null, null);
|
||||
if (!string.IsNullOrEmpty(strJosn))
|
||||
{
|
||||
JObject obj = JObject.Parse(strJosn);
|
||||
code = Funs.GetNewIntOrZero(obj["code"].ToString());
|
||||
message = obj["message"].ToString();
|
||||
if (code == 1)
|
||||
{
|
||||
var getData =
|
||||
JsonConvert.DeserializeObject<List<HazardRegisterSyncItem>>(obj["data"].ToString());
|
||||
if (getData.Count() > 0)
|
||||
{
|
||||
ProcessHazardRegisterData(getData, project.ProjectId, unitId, WebUrl, "pull");
|
||||
}
|
||||
message = "获取成功:同步安全检查数" + getData.Count().ToString() + "条";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
message = "获取失败:" + ex.Message;
|
||||
ErrLogInfo.WriteLog("安全检查获取!", ex);
|
||||
}
|
||||
|
||||
return message;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region 推送安全检查数据
|
||||
|
||||
public static ReturnData pushHazardRegisterLists(string projectId, string dataId = "")
|
||||
{
|
||||
Model.ReturnData responeData = new Model.ReturnData();
|
||||
responeData.code = 0;
|
||||
responeData.message = string.Empty;
|
||||
var project = Funs.DB.Base_Project.FirstOrDefault(x => x.ProjectId == projectId);
|
||||
try
|
||||
{
|
||||
if (project != null)
|
||||
{
|
||||
//获取安全检查数据
|
||||
var items = GetHazardRegisterLitsByprojectIdUnitIdPage(projectId, "", dataId);
|
||||
//总包地址推送
|
||||
if (items.Count() > 0)
|
||||
{
|
||||
var thisUnit = CommonService.GetIsThisUnit(); //当前单位
|
||||
var apiurl = "/api/HazardRegisterSync/SaveHazardRegisterSyncData";
|
||||
//总包单位接口地址
|
||||
var Url = BLL.UnitService.getUnitApiUrlByUnitId(project.SubjectUnit);
|
||||
var ApiUrl = "";
|
||||
var WebUrl = "";
|
||||
if (!string.IsNullOrEmpty(Url))
|
||||
{
|
||||
var urls = Url.Split(',');
|
||||
ApiUrl = urls[0];
|
||||
if (urls.Length > 1)
|
||||
{
|
||||
WebUrl = urls[1];
|
||||
}
|
||||
}
|
||||
// thisUnit.CollCropCode = "913404001520228377Y";//测试使用
|
||||
// project.SubjectProject = "B409A8D7-48C7-486E-84C7-E3E7B2C0E5B7";//测试使用
|
||||
|
||||
var pushData = new HazardRegisterSyncData
|
||||
{
|
||||
CollCropCode = thisUnit.CollCropCode, //分包单位社会统一信用码
|
||||
// CollCropCode = "91420000177570439L", //分包单位社会统一信用码
|
||||
// ProjectId = "c7ade79e-7646-4c59-a8fd-020a7e3138c6", //主包项目Id
|
||||
ProjectId = project.SubjectProject, //主包项目Id
|
||||
UnitDomain = Funs.SGGLUrl, //分包单位域名地址【文件存储地址】
|
||||
Items = items //安全检查数据
|
||||
};
|
||||
var pushContent = JsonConvert.SerializeObject(pushData);
|
||||
string baseurl = ApiUrl + apiurl;
|
||||
string contenttype = "application/json;charset=unicode";
|
||||
var returndata = APIGetHttpService.Http(baseurl, "Post", contenttype, null, pushContent);
|
||||
if (!string.IsNullOrEmpty(returndata))
|
||||
{
|
||||
JObject obj = JObject.Parse(returndata);
|
||||
string code = obj["code"].ToString();
|
||||
string message = obj["message"].ToString();
|
||||
responeData.code = int.Parse(code);
|
||||
responeData.message = message;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
responeData.code = 0;
|
||||
responeData.message = "当前没有项目安全检查数据";
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
responeData.message = "同步到总包单位失败!";
|
||||
ErrLogInfo.WriteLog("【安全检查】同步到总包单位失败!", ex);
|
||||
}
|
||||
|
||||
return responeData;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region 接收保存项目安全检查数据
|
||||
|
||||
public static string SaveHazardRegisterSyncData(Model.HazardRegisterSyncData items)
|
||||
{
|
||||
int code = 0;
|
||||
string message = "";
|
||||
try
|
||||
{
|
||||
if (items.Items.Count > 0 || items.Items.Count > 0)
|
||||
{
|
||||
var CollCropCode = items.CollCropCode; //分包单位社会统一信用码
|
||||
var ProjectId = items.ProjectId; //总包项目Id
|
||||
var UnitDomain = items.UnitDomain; //分包单位域名地址【文件存储地址】
|
||||
var unit = Funs.DB.Base_Unit.FirstOrDefault(x => x.CollCropCode == CollCropCode); //根据CollCropCode获取单位id
|
||||
if (unit == null)
|
||||
{
|
||||
message = "总包单位不存在本单位,请登录总包系统检查维护本单位信息!";
|
||||
}
|
||||
else
|
||||
{
|
||||
//2、判断主包项目是否存在
|
||||
var porject = BLL.ProjectService.GetProjectByProjectId(ProjectId);
|
||||
if (porject == null)
|
||||
{
|
||||
message = "总包单位不存在本项目,请检查总包项目关联是否正确!";
|
||||
}
|
||||
else
|
||||
{
|
||||
ProcessHazardRegisterData(items.Items, ProjectId, unit.UnitId, UnitDomain, "push");
|
||||
message = "数据推送成功!";
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
message = "暂无项目安全检查数据!";
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw ex;
|
||||
}
|
||||
|
||||
return message;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region 处理单个安全检查数据的新增或更新逻辑
|
||||
|
||||
/// <summary>
|
||||
/// 处理单个安全检查数据的新增或更新逻辑
|
||||
/// </summary>
|
||||
/// <param name="item">安全检查数据项</param>
|
||||
/// <param name="projectId">项目id</param>
|
||||
/// <param name="unitId">单位ID</param>
|
||||
/// <param name="WebUrl">Web地址</param>
|
||||
private static void ProcessHazardRegisterData(List<Model.HazardRegisterSyncItem> getData, string projectId,
|
||||
string unitId, string WebUrl, string type)
|
||||
{
|
||||
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
|
||||
{
|
||||
foreach (var item in getData)
|
||||
{
|
||||
Model.HSSE_Hazard_HazardRegister model =
|
||||
db.HSSE_Hazard_HazardRegister.FirstOrDefault(x => x.HazardRegisterId == item.HazardRegisterId);
|
||||
if (model == null)
|
||||
{
|
||||
Model.HSSE_Hazard_HazardRegister newModel = new Model.HSSE_Hazard_HazardRegister
|
||||
{
|
||||
HazardRegisterId = item.HazardRegisterId,
|
||||
HazardCode = item.HazardCode,
|
||||
RegisterDate = item.RegisterDate,
|
||||
RegisterDef = item.RegisterDef,
|
||||
Rectification = item.Rectification,
|
||||
Place = APIDataShareSyncService.getUnitWorkId(item.PlaceName, projectId),
|
||||
ResponsibleUnit = unitId,
|
||||
Observer = item.Observer,
|
||||
AttachUrl = item.AttachUrl,
|
||||
ProjectId = projectId,
|
||||
States = item.States,
|
||||
IsEffective = item.IsEffective,
|
||||
ResponsibleMan = APIDataShareSyncService.getUserId(item.ResponsibleManName),
|
||||
CheckManId = APIDataShareSyncService.getUserId(item.CheckManName),
|
||||
CheckTime = item.CheckTime,
|
||||
RectificationPeriod = item.RectificationPeriod,
|
||||
ImageUrl = item.ImageUrl,
|
||||
RectificationImageUrl = item.RectificationImageUrl,
|
||||
RectificationTime = item.RectificationTime,
|
||||
ConfirmMan = APIDataShareSyncService.getUserId(item.ConfirmManName),
|
||||
ConfirmDate = item.ConfirmDate,
|
||||
HandleIdea = item.HandleIdea,
|
||||
CutPayment = item.CutPayment,
|
||||
ProblemTypes = item.ProblemTypes,
|
||||
RegisterTypesId = APIDataShareSyncService.getRegisterTypesId(item.RegisterTypesName),
|
||||
CheckCycle = item.CheckCycle,
|
||||
CheckItemDetailId = item.CheckItemDetailId,
|
||||
SupCheckItemSetId = item.SupCheckItemSetId,
|
||||
CheckItemSetId = item.CheckItemSetId,
|
||||
CheckSpecialId = item.CheckSpecialId,
|
||||
InstallationId = item.InstallationId,
|
||||
SafeSupervisionId = item.SafeSupervisionId,
|
||||
ResponsibleMan2 = APIDataShareSyncService.getUserId(item.ResponsibleMan2Name),
|
||||
SafeSupervisionIsOK = item.SafeSupervisionIsOK,
|
||||
GpsLocation = item.GpsLocation,
|
||||
IsWx = item.IsWx,
|
||||
DIC_ID = item.DIC_ID,
|
||||
CCManIds = item.CCManIds,
|
||||
ResultType = item.ResultType,
|
||||
ResultId = item.ResultId,
|
||||
Requirements = item.Requirements,
|
||||
HazardValue = item.Risk_Level,
|
||||
ControlId = item.ControlId,
|
||||
};
|
||||
if (type == "pull")
|
||||
{
|
||||
newModel.DataSource = item.DataSource;
|
||||
}
|
||||
db.HSSE_Hazard_HazardRegister.InsertOnSubmit(newModel);
|
||||
db.SubmitChanges();
|
||||
}
|
||||
else
|
||||
{
|
||||
// model.HazardRegisterId = item.HazardRegisterId;
|
||||
model.HazardCode = item.HazardCode;
|
||||
model.RegisterDate = item.RegisterDate;
|
||||
model.RegisterDef = item.RegisterDef;
|
||||
model.Rectification = item.Rectification;
|
||||
model.Place = APIDataShareSyncService.getUnitWorkId(item.PlaceName, projectId);
|
||||
model.ResponsibleUnit = unitId;
|
||||
model.Observer = item.Observer;
|
||||
model.AttachUrl = item.AttachUrl;
|
||||
model.ProjectId = projectId;
|
||||
model.States = item.States;
|
||||
model.IsEffective = item.IsEffective;
|
||||
model.ResponsibleMan = APIDataShareSyncService.getUserId(item.ResponsibleManName);
|
||||
model.CheckManId = APIDataShareSyncService.getUserId(item.CheckManName);
|
||||
model.CheckTime = item.CheckTime;
|
||||
model.RectificationPeriod = item.RectificationPeriod;
|
||||
model.ImageUrl = item.ImageUrl;
|
||||
model.RectificationImageUrl = item.RectificationImageUrl;
|
||||
model.RectificationTime = item.RectificationTime;
|
||||
model.ConfirmMan = APIDataShareSyncService.getUserId(item.ConfirmManName);
|
||||
model.ConfirmDate = item.ConfirmDate;
|
||||
model.HandleIdea = item.HandleIdea;
|
||||
model.CutPayment = item.CutPayment;
|
||||
model.ProblemTypes = item.ProblemTypes;
|
||||
model.RegisterTypesId = APIDataShareSyncService.getRegisterTypesId(item.RegisterTypesName);
|
||||
model.CheckCycle = item.CheckCycle;
|
||||
model.CheckItemDetailId = item.CheckItemDetailId;
|
||||
model.SupCheckItemSetId = item.SupCheckItemSetId;
|
||||
model.CheckItemSetId = item.CheckItemSetId;
|
||||
model.CheckSpecialId = item.CheckSpecialId;
|
||||
model.InstallationId = item.InstallationId;
|
||||
model.SafeSupervisionId = item.SafeSupervisionId;
|
||||
model.ResponsibleMan2 = APIDataShareSyncService.getUserId(item.ResponsibleMan2Name);
|
||||
model.SafeSupervisionIsOK = item.SafeSupervisionIsOK;
|
||||
model.GpsLocation = item.GpsLocation;
|
||||
model.IsWx = item.IsWx;
|
||||
model.DIC_ID = item.DIC_ID;
|
||||
model.CCManIds = item.CCManIds;
|
||||
model.ResultType = item.ResultType;
|
||||
model.ResultId = item.ResultId;
|
||||
model.Requirements = item.Requirements;
|
||||
model.HazardValue = item.Risk_Level;
|
||||
model.ControlId = item.ControlId;
|
||||
if (type == "pull")
|
||||
{
|
||||
model.DataSource = item.DataSource;
|
||||
}
|
||||
|
||||
db.SubmitChanges();
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(item.ImageUrl))
|
||||
{
|
||||
APIDataShareSyncService.OperationAttachFile(WebUrl, item.HazardRegisterId,
|
||||
BLL.Const.HSSE_HiddenRectificationListMenuId, item.ImageUrl);
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(item.RectificationImageUrl))
|
||||
{
|
||||
APIDataShareSyncService.OperationAttachFile(WebUrl, item.HazardRegisterId + "-R",
|
||||
BLL.Const.HSSE_HiddenRectificationListMenuId, item.RectificationImageUrl);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user