From 8fe3da3c9e129dd2d7b27ee44d981b174af2d575 Mon Sep 17 00:00:00 2001
From: fei550 <1420031550@qq.com>
Date: Mon, 9 Mar 2026 19:10:40 +0800
Subject: [PATCH] =?UTF-8?q?=E8=B4=A8=E9=87=8F=E5=B7=A1=E6=A3=80=E6=95=B0?=
=?UTF-8?q?=E6=8D=AE=E5=90=8C=E6=AD=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
SGGL/BLL/BLL.csproj | 1 +
.../CQMS/APICheckControlSyncService.cs | 538 ++++++++++++++++++
SGGL/Model/DataShare/CheckControlSyncData.cs | 192 +++++++
SGGL/Model/DataShare/CqmsMeetingSyncData.cs | 142 +++++
.../DataShare/InspectionMachineSyncData.cs | 162 ++++++
SGGL/Model/Model.cs | 24 +
SGGL/Model/Model.csproj | 3 +
.../CQMS/CheckControlSyncController.cs | 136 +++++
SGGL/WebAPI/Web.config | 2 +-
SGGL/WebAPI/WebAPI.csproj | 1 +
10 files changed, 1200 insertions(+), 1 deletion(-)
create mode 100644 SGGL/BLL/DataShare/CQMS/APICheckControlSyncService.cs
create mode 100644 SGGL/Model/DataShare/CheckControlSyncData.cs
create mode 100644 SGGL/Model/DataShare/CqmsMeetingSyncData.cs
create mode 100644 SGGL/Model/DataShare/InspectionMachineSyncData.cs
create mode 100644 SGGL/WebAPI/Controllers/DataShare/CQMS/CheckControlSyncController.cs
diff --git a/SGGL/BLL/BLL.csproj b/SGGL/BLL/BLL.csproj
index f1ac53d2..5edb7082 100644
--- a/SGGL/BLL/BLL.csproj
+++ b/SGGL/BLL/BLL.csproj
@@ -315,6 +315,7 @@
+
diff --git a/SGGL/BLL/DataShare/CQMS/APICheckControlSyncService.cs b/SGGL/BLL/DataShare/CQMS/APICheckControlSyncService.cs
new file mode 100644
index 00000000..f427d26a
--- /dev/null
+++ b/SGGL/BLL/DataShare/CQMS/APICheckControlSyncService.cs
@@ -0,0 +1,538 @@
+using Newtonsoft.Json.Linq;
+using System;
+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 APICheckControlSyncService
+ {
+ #region 根据项目、单位获取质量巡检列表
+ ///
+ /// 根据项目、单位获取质量巡检列表
+ ///
+ /// 项目ID
+ /// 单位ID
+ /// 数据ID(可选,用于单条数据同步)
+ /// 质量巡检数据列表
+ public static List GetCheckControlListsByProjectIdUnitIdPage(
+ string projectId, string unitId, string dataId = "")
+ {
+ using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
+ {
+ var list = from x in db.Check_CheckControl
+ where x.ProjectId == projectId
+ select x;
+
+ if (!string.IsNullOrEmpty(unitId))
+ {
+ list = list.Where(x => x.UnitId == unitId);
+ }
+
+ if (!string.IsNullOrEmpty(dataId))
+ {
+ list = list.Where(x => x.CheckControlCode == dataId);
+ }
+
+ var dataList = (from x in list
+ join unit in db.Base_Unit on x.UnitId equals unit.UnitId into unitTemp
+ from unit in unitTemp.DefaultIfEmpty()
+ join pro in db.Base_CNProfessional on x.CNProfessionalCode equals pro.CNProfessionalId into proTemp
+ from pro in proTemp.DefaultIfEmpty()
+ join uw in db.WBS_UnitWork on x.UnitWorkId equals uw.UnitWorkId into uwTemp
+ from uw in uwTemp.DefaultIfEmpty()
+ join qqt in db.Base_QualityQuestionType on x.QuestionType equals qqt.QualityQuestionTypeId into qqtTemp
+ from qqt in qqtTemp.DefaultIfEmpty()
+ join u1 in db.Sys_User on x.CheckMan equals u1.UserId into u1Temp
+ from u1 in u1Temp.DefaultIfEmpty()
+ join u2 in db.Sys_User on x.SubmitMan equals u2.UserId into u2Temp
+ from u2 in u2Temp.DefaultIfEmpty()
+ join pu in db.Base_Unit on x.ProposeUnitId equals pu.UnitId into puTemp
+ from pu in puTemp.DefaultIfEmpty()
+ join att in db.AttachFile on x.CheckControlCode equals att.ToKeyId into attTemp
+ from att in attTemp.DefaultIfEmpty()
+ join attRe in db.AttachFile on x.CheckControlCode + "r" equals attRe.ToKeyId into attReTemp
+ from attRe in attReTemp.DefaultIfEmpty()
+ select new CheckControlSyncItem
+ {
+ CheckControlCode = x.CheckControlCode,
+ ProjectId = x.ProjectId,
+ UnitWorkId = x.UnitWorkId,
+ UnitWorkName = uw.UnitWorkName,
+ UnitId = x.UnitId,
+ UnitName = unit.UnitName,
+ CheckDate = x.CheckDate,
+ CheckMan = x.CheckMan,
+ CheckManName = u1.UserName,
+ CheckSite = x.CheckSite,
+ DocCode = x.DocCode,
+ CNProfessionalCode = x.CNProfessionalCode,
+ CNProfessionalName = pro.ProfessionalName,
+ QuestionType = x.QuestionType,
+ QuestionTypeName = qqt.QualityQuestionType,
+ QuestionDef = x.QuestionDef,
+ RectifyOpinion = x.RectifyOpinion,
+ LimitDate = x.LimitDate,
+ AttachUrl = att.AttachUrl,
+ HandleWay = x.HandleWay,
+ RectifyDate = x.RectifyDate,
+ ReAttachUrl = attRe.AttachUrl,
+ State = x.State,
+ IsSubmit = x.IsSubmit,
+ SubmitMan = x.SubmitMan,
+ SubmitManName = u2.UserName,
+ IsOK = x.IsOK,
+ ProposeUnitId = x.ProposeUnitId,
+ ProposeUnitName = pu.UnitName,
+ SaveHandleMan = x.SaveHandleMan,
+ DataSource = "1"
+ }).ToList();
+
+ return dataList;
+ }
+ }
+
+ #endregion
+
+
+ #region 拉取质量巡检数据
+
+ ///
+ /// 拉取质量巡检数据
+ ///
+ /// 处理结果消息
+ public static string getCheckControlLists(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.IsDelete == null || x.IsDelete == false) &&
+ 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];
+ }
+ }
+
+ string url = "/api/CheckControlSync/getCheckControlListByProjectIdAndCollCropCode?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>(obj["data"].ToString());
+ if (getData.Count() > 0)
+ {
+ ProcessCheckControlData(getData, project.ProjectId, unitId, WebUrl, "pull");
+ }
+ message = "获取成功:同步质量巡检数" + getData.Count().ToString() + "条";
+ }
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ message = "获取失败:" + ex.Message;
+ ErrLogInfo.WriteLog("质量巡检获取!", ex);
+ }
+
+ return message;
+ }
+
+ #endregion
+
+
+ #region 推送质量巡检数据
+
+ ///
+ /// 推送质量巡检数据
+ ///
+ /// 项目ID
+ /// 数据ID(可选,用于单条数据推送)
+ /// 推送结果
+ public static ReturnData pushCheckControlLists(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 = GetCheckControlListsByProjectIdUnitIdPage(projectId, "", dataId);
+
+ if (items.Count() > 0)
+ {
+ var thisUnit = CommonService.GetIsThisUnit(); //当前单位
+ var apiurl = "/api/CheckControlSync/SaveCheckControlSyncData";
+
+ //总包单位接口地址
+ 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];
+ }
+ }
+
+ var pushData = new CheckControlSyncData
+ {
+ CollCropCode = thisUnit.CollCropCode, //分包单位社会统一信用码
+ 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 SaveCheckControlSyncData(Model.CheckControlSyncData 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
+ {
+ //判断主包项目是否存在
+ var porject = BLL.ProjectService.GetProjectByProjectId(ProjectId);
+ if (porject == null)
+ {
+ message = "总包单位不存在本项目,请检查总包项目关联是否正确!";
+ }
+ else
+ {
+ ProcessCheckControlData(items.Items, ProjectId, unit.UnitId, UnitDomain, "push");
+ message = "数据推送成功!";
+ }
+ }
+ }
+ else
+ {
+ message = "暂无质量巡检数据!";
+ }
+ }
+ catch (Exception ex)
+ {
+ throw ex;
+ }
+
+ return message;
+ }
+
+ #endregion
+
+
+ #region 处理质量巡检数据的新增或更新逻辑
+
+ ///
+ /// 处理质量巡检数据的新增或更新逻辑
+ ///
+ /// 质量巡检数据列表
+ /// 项目id
+ /// 单位ID
+ /// Web地址
+ ///
+ private static void ProcessCheckControlData(
+ List getData,
+ string projectId,
+ string unitId,
+ string WebUrl, string type)
+ {
+ using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
+ {
+ foreach (var item in getData)
+ {
+ Model.Check_CheckControl model = db.Check_CheckControl.FirstOrDefault(x => x.CheckControlCode == item.CheckControlCode);
+
+ if (model == null)
+ {
+ //新增
+ Model.Check_CheckControl newModel = new Model.Check_CheckControl
+ {
+ CheckControlCode = item.CheckControlCode,
+ ProjectId = projectId,
+ UnitWorkId = APIDataShareSyncService.getUnitWorkId(item.UnitWorkName, projectId),
+ UnitId = getUnitIdByUnitName(item.UnitName) ?? unitId,
+ CheckDate = item.CheckDate,
+ CheckMan = APIDataShareSyncService.getUserId(item.CheckManName),
+ CheckSite = item.CheckSite,
+ DocCode = item.DocCode,
+ CNProfessionalCode = getCNProfessionalId(item.CNProfessionalName),
+ QuestionType = getQualityQuestionTypeId(item.QuestionTypeName, projectId),
+ QuestionDef = item.QuestionDef,
+ RectifyOpinion = item.RectifyOpinion,
+ LimitDate = item.LimitDate,
+ AttachUrl = item.AttachUrl,
+ HandleWay = item.HandleWay,
+ RectifyDate = item.RectifyDate,
+ ReAttachUrl = item.ReAttachUrl,
+ State = item.State,
+ IsSubmit = item.IsSubmit,
+ SubmitMan = APIDataShareSyncService.getUserId(item.SubmitManName),
+ IsOK = item.IsOK,
+ ProposeUnitId = getUnitIdByUnitName(item.ProposeUnitName),
+ SaveHandleMan = item.SaveHandleMan
+ };
+ if (type == "pull")
+ {
+ newModel.DataSource = item.DataSource;
+ }
+ db.Check_CheckControl.InsertOnSubmit(newModel);
+ db.SubmitChanges();
+ }
+ else
+ {
+ //更新
+ model.ProjectId = projectId;
+ model.UnitWorkId = APIDataShareSyncService.getUnitWorkId(item.UnitWorkName, projectId);
+ model.UnitId = getUnitIdByUnitName(item.UnitName) ?? unitId;
+ model.CheckDate = item.CheckDate;
+ model.CheckMan = APIDataShareSyncService.getUserId(item.CheckManName);
+ model.CheckSite = item.CheckSite;
+ model.DocCode = item.DocCode;
+ model.CNProfessionalCode = getCNProfessionalId(item.CNProfessionalName);
+ model.QuestionType = getQualityQuestionTypeId(item.QuestionTypeName, projectId);
+ model.QuestionDef = item.QuestionDef;
+ model.RectifyOpinion = item.RectifyOpinion;
+ model.LimitDate = item.LimitDate;
+ model.AttachUrl = item.AttachUrl;
+ model.HandleWay = item.HandleWay;
+ model.RectifyDate = item.RectifyDate;
+ model.ReAttachUrl = item.ReAttachUrl;
+ model.State = item.State;
+ model.IsSubmit = item.IsSubmit;
+ model.SubmitMan = APIDataShareSyncService.getUserId(item.SubmitManName);
+ model.IsOK = item.IsOK;
+ model.ProposeUnitId = getUnitIdByUnitName(item.ProposeUnitName);
+ model.SaveHandleMan = item.SaveHandleMan;
+ if (type == "pull")
+ {
+ model.DataSource = item.DataSource;
+ }
+ db.SubmitChanges();
+ }
+
+ //处理整改前附件
+ if (!string.IsNullOrEmpty(item.AttachUrl))
+ {
+ APIDataShareSyncService.OperationAttachFile(WebUrl, item.CheckControlCode,
+ BLL.Const.CheckListMenuId, item.AttachUrl);
+ }
+
+ //处理整改后附件
+ if (!string.IsNullOrEmpty(item.ReAttachUrl))
+ {
+ APIDataShareSyncService.OperationAttachFile(WebUrl, item.CheckControlCode + "R",
+ BLL.Const.CheckListMenuId, item.ReAttachUrl);
+ }
+ }
+ }
+ }
+
+ #endregion
+
+
+ #region 辅助映射方法
+
+ ///
+ /// 获取质量问题类型ID(不存在则创建)
+ ///
+ /// 问题类型名称
+ /// 项目ID
+ /// 问题类型ID
+ private static string getQualityQuestionTypeId(string questionTypeName, string projectId)
+ {
+ string questionTypeId = null;
+ if (!string.IsNullOrEmpty(questionTypeName))
+ {
+ var qqt = Funs.DB.Base_QualityQuestionType.FirstOrDefault(x => x.QualityQuestionType == questionTypeName);
+ if (qqt == null)
+ {
+ //不存在则创建
+ Model.Base_QualityQuestionType newQqt = new Model.Base_QualityQuestionType
+ {
+ QualityQuestionTypeId = SQLHelper.GetNewID(typeof(Model.Base_QualityQuestionType)),
+ QualityQuestionType = questionTypeName
+ };
+ QualityQuestionTypeService.AddQualityQuestionType(newQqt);
+ questionTypeId = newQqt.QualityQuestionTypeId;
+ }
+ else
+ {
+ questionTypeId = qqt.QualityQuestionTypeId;
+ }
+ }
+ return questionTypeId;
+ }
+
+ ///
+ /// 获取专业ID(不存在则创建)
+ ///
+ ///
+ ///
+ ///
+ private static string getCNProfessionalId(string ProfessionalName)
+ {
+ string Id = null;
+ if (!string.IsNullOrEmpty(ProfessionalName))
+ {
+ var names = ProfessionalName.Split(',');
+ List IdList = new List();
+ foreach (var name in names)
+ {
+ var cnProfessional = Funs.DB.Base_CNProfessional.Where(x =>
+ x.ProfessionalName == name).ToList();
+ if (cnProfessional.Count == 0)
+ {
+ Model.Base_CNProfessional newCnProfessional = new Model.Base_CNProfessional
+ {
+ CNProfessionalId = SQLHelper.GetNewID(typeof(Model.WBS_UnitWork)),
+ ProfessionalName = name,
+ };
+ CNProfessionalService.AddCNProfessional(newCnProfessional);
+ IdList.Add(newCnProfessional.CNProfessionalId);
+ }
+ else
+ {
+ IdList.Add(cnProfessional.FirstOrDefault().CNProfessionalId);
+ }
+ }
+
+ Id = string.Join(",", IdList);
+ }
+
+ return Id;
+ }
+
+ ///
+ /// 获取单位ID(根据名称)
+ ///
+ /// 单位名称
+ /// 单位ID
+ private static string getUnitIdByUnitName(string unitName)
+ {
+ string unitId = null;
+ if (!string.IsNullOrEmpty(unitName))
+ {
+ var unit = Funs.DB.Base_Unit.FirstOrDefault(x => x.UnitName == unitName);
+ if (unit != null)
+ {
+ unitId = unit.UnitId;
+ }
+ }
+ return unitId;
+ }
+
+ #endregion
+ }
+}
diff --git a/SGGL/Model/DataShare/CheckControlSyncData.cs b/SGGL/Model/DataShare/CheckControlSyncData.cs
new file mode 100644
index 00000000..90d74540
--- /dev/null
+++ b/SGGL/Model/DataShare/CheckControlSyncData.cs
@@ -0,0 +1,192 @@
+using System.Collections.Generic;
+using System;
+
+namespace Model
+{
+ ///
+ /// 质量巡检同步数据容器
+ ///
+ public class CheckControlSyncData
+ {
+ ///
+ /// 公司社会统一信用代码
+ ///
+ public string CollCropCode { get; set; }
+
+ ///
+ /// 项目id
+ ///
+ public string ProjectId { get; set; }
+
+ ///
+ /// 分包单位程序访问地址
+ ///
+ public string UnitDomain { get; set; }
+
+ ///
+ /// 质量巡检数据列表
+ ///
+ public List Items { get; set; }
+ }
+
+ ///
+ /// 质量巡检数据项
+ ///
+ public class CheckControlSyncItem
+ {
+ ///
+ /// 主键
+ ///
+ public string CheckControlCode { get; set; }
+
+ ///
+ /// 项目ID
+ ///
+ public string ProjectId { get; set; }
+
+ ///
+ /// 单位工程ID
+ ///
+ public string UnitWorkId { get; set; }
+
+ ///
+ /// 单位工程名称
+ ///
+ public string UnitWorkName { get; set; }
+
+ ///
+ /// 单位ID
+ ///
+ public string UnitId { get; set; }
+
+ ///
+ /// 单位名称
+ ///
+ public string UnitName { get; set; }
+
+ ///
+ /// 检查日期
+ ///
+ public DateTime? CheckDate { get; set; }
+
+ ///
+ /// 检查人ID
+ ///
+ public string CheckMan { get; set; }
+
+ ///
+ /// 检查人姓名
+ ///
+ public string CheckManName { get; set; }
+
+ ///
+ /// 检查部位
+ ///
+ public string CheckSite { get; set; }
+
+ ///
+ /// 单据编号
+ ///
+ public string DocCode { get; set; }
+
+ ///
+ /// 专业代码
+ ///
+ public string CNProfessionalCode { get; set; }
+
+ ///
+ /// 专业名称
+ ///
+ public string CNProfessionalName { get; set; }
+
+ ///
+ /// 问题类型ID
+ ///
+ public string QuestionType { get; set; }
+
+ ///
+ /// 问题类型名称
+ ///
+ public string QuestionTypeName { get; set; }
+
+ ///
+ /// 问题描述
+ ///
+ public string QuestionDef { get; set; }
+
+ ///
+ /// 整改意见
+ ///
+ public string RectifyOpinion { get; set; }
+
+ ///
+ /// 限期整改日期
+ ///
+ public DateTime? LimitDate { get; set; }
+
+ ///
+ /// 整改前附件URL
+ ///
+ public string AttachUrl { get; set; }
+
+ ///
+ /// 处理方式
+ ///
+ public string HandleWay { get; set; }
+
+ ///
+ /// 整改日期
+ ///
+ public DateTime? RectifyDate { get; set; }
+
+ ///
+ /// 整改后附件URL
+ ///
+ public string ReAttachUrl { get; set; }
+
+ ///
+ /// 流程状态(0-重新编制,1-总包编制,...,7-审批完成)
+ ///
+ public string State { get; set; }
+
+ ///
+ /// 是否提交
+ ///
+ public bool? IsSubmit { get; set; }
+
+ ///
+ /// 提交人ID
+ ///
+ public string SubmitMan { get; set; }
+
+ ///
+ /// 提交人姓名
+ ///
+ public string SubmitManName { get; set; }
+
+ ///
+ /// 是否合格
+ ///
+ public bool? IsOK { get; set; }
+
+ ///
+ /// 提出单位ID
+ ///
+ public string ProposeUnitId { get; set; }
+
+ ///
+ /// 提出单位名称
+ ///
+ public string ProposeUnitName { get; set; }
+
+ ///
+ /// 保存处理人
+ ///
+ public string SaveHandleMan { get; set; }
+
+ ///
+ /// 数据来源(1-同步数据)
+ ///
+ public string DataSource { get; set; }
+ }
+}
diff --git a/SGGL/Model/DataShare/CqmsMeetingSyncData.cs b/SGGL/Model/DataShare/CqmsMeetingSyncData.cs
new file mode 100644
index 00000000..b9b57b3f
--- /dev/null
+++ b/SGGL/Model/DataShare/CqmsMeetingSyncData.cs
@@ -0,0 +1,142 @@
+using System;
+using System.Collections.Generic;
+
+namespace Model
+{
+ ///
+ /// 质量会议同步数据容器
+ ///
+ public class CqmsMeetingSyncData
+ {
+ ///
+ /// 公司社会统一信用代码
+ ///
+ public string CollCropCode { get; set; }
+
+ ///
+ /// 项目id
+ ///
+ public string ProjectId { get; set; }
+
+ ///
+ /// 分包单位程序访问地址
+ ///
+ public string UnitDomain { get; set; }
+
+ ///
+ /// 质量会议数据列表
+ ///
+ public List Items { get; set; }
+ }
+
+ ///
+ /// 质量会议数据项
+ ///
+ public class CqmsMeetingSyncItem
+ {
+ ///
+ /// 主键
+ ///
+ public string MeetingId { get; set; }
+
+ ///
+ /// 会议编码
+ ///
+ public string MeetingCode { get; set; }
+
+ ///
+ /// 会议名称
+ ///
+ public string MeetingName { get; set; }
+
+ ///
+ /// 项目ID
+ ///
+ public string ProjectId { get; set; }
+
+ ///
+ /// 单位ID
+ ///
+ public string UnitId { get; set; }
+
+ ///
+ /// 单位名称
+ ///
+ public string UnitName { get; set; }
+
+ ///
+ /// 会议日期
+ ///
+ public DateTime? MeetingDate { get; set; }
+
+ ///
+ /// 会议时长
+ ///
+ public decimal? MeetingHours { get; set; }
+
+ ///
+ /// 会议地点
+ ///
+ public string MeetingPlace { get; set; }
+
+ ///
+ /// 主持人ID
+ ///
+ public string MeetingHostMan { get; set; }
+
+ ///
+ /// 主持人姓名
+ ///
+ public string MeetingHostManName { get; set; }
+
+ ///
+ /// 其他主持人
+ ///
+ public string MeetingHostManOther { get; set; }
+
+ ///
+ /// 参会人数
+ ///
+ public int? AttentPersonNum { get; set; }
+
+ ///
+ /// 参会人员(姓名列表,逗号分隔)
+ ///
+ public string AttentPerson { get; set; }
+
+ ///
+ /// 参会人员ID(ID列表,逗号分隔)
+ ///
+ public string AttentPersonIds { get; set; }
+
+ ///
+ /// 会议内容(HTML编码)
+ ///
+ public string MeetingContents { get; set; }
+
+ ///
+ /// 编制人ID
+ ///
+ public string CompileMan { get; set; }
+
+ ///
+ /// 编制人姓名
+ ///
+ public string CompileManName { get; set; }
+
+ ///
+ /// 编制日期
+ ///
+ public DateTime? CompileDate { get; set; }
+
+ ///
+ /// 状态(整数,2表示完成)
+ ///
+ public string States { get; set; }
+
+ ///
+ /// 数据来源(1-同步数据)
+ ///
+ public string DataSource { get; set; }
+ }
+}
diff --git a/SGGL/Model/DataShare/InspectionMachineSyncData.cs b/SGGL/Model/DataShare/InspectionMachineSyncData.cs
new file mode 100644
index 00000000..f680b522
--- /dev/null
+++ b/SGGL/Model/DataShare/InspectionMachineSyncData.cs
@@ -0,0 +1,162 @@
+using System;
+using System.Collections.Generic;
+
+namespace Model
+{
+ ///
+ /// 质量计量器具同步数据容器
+ ///
+ public class InspectionMachineSyncData
+ {
+ ///
+ /// 公司社会统一信用代码
+ ///
+ public string CollCropCode { get; set; }
+
+ ///
+ /// 项目id
+ ///
+ public string ProjectId { get; set; }
+
+ ///
+ /// 分包单位程序访问地址
+ ///
+ public string UnitDomain { get; set; }
+
+ ///
+ /// 质量计量器具数据列表
+ ///
+ public List Items { get; set; }
+ }
+
+ ///
+ /// 质量计量器具数据项
+ ///
+ public class InspectionMachineSyncItem
+ {
+ ///
+ /// 主键
+ ///
+ public string InspectionMachineId { get; set; }
+
+ ///
+ /// 计量器具编码
+ ///
+ public string InspectionMachineCode { get; set; }
+
+ ///
+ /// 计量器具名称
+ ///
+ public string InspectionMachineName { get; set; }
+
+ ///
+ /// 规格型号
+ ///
+ public string SpecificationModel { get; set; }
+
+ ///
+ /// 数量
+ ///
+ public int? UnitsCount { get; set; }
+
+ ///
+ /// 类别
+ ///
+ public string SType { get; set; }
+
+ ///
+ /// 检验类型
+ ///
+ public string InspectionType { get; set; }
+
+ ///
+ /// 检验日期
+ ///
+ public DateTime? InspectionDate { get; set; }
+
+ ///
+ /// 下次检验日期
+ ///
+ public DateTime? NextTestDate { get; set; }
+
+ ///
+ /// 检验周期
+ ///
+ public string TestCycle { get; set; }
+
+ ///
+ /// 是否校验合格
+ ///
+ public bool? IsCheckOK { get; set; }
+
+ ///
+ /// 是否在校验期内
+ ///
+ public bool? IsVerification { get; set; }
+
+ ///
+ /// 审批状态
+ ///
+ public string Status { get; set; }
+
+ ///
+ /// 是否在场
+ ///
+ public bool? IsOnSite { get; set; }
+
+ ///
+ /// 离场日期
+ ///
+ public DateTime? LeaveDate { get; set; }
+
+ ///
+ /// 单位ID
+ ///
+ public string UnitId { get; set; }
+
+ ///
+ /// 单位名称
+ ///
+ public string UnitName { get; set; }
+
+ ///
+ /// 专业ID
+ ///
+ public string CNProfessionalId { get; set; }
+
+ ///
+ /// 专业名称
+ ///
+ public string CNProfessionalName { get; set; }
+
+ ///
+ /// 编制人ID
+ ///
+ public string CompileMan { get; set; }
+
+ ///
+ /// 编制人姓名
+ ///
+ public string CompileManName { get; set; }
+
+ ///
+ /// 编制日期
+ ///
+ public DateTime? CompileDate { get; set; }
+
+ ///
+ /// 附件URL
+ ///
+ public string AttachUrl { get; set; }
+
+ ///
+ /// 项目ID
+ ///
+ public string ProjectId { get; set; }
+
+ ///
+ /// 数据来源(1-同步数据)
+ ///
+ public string DataSource { get; set; }
+ }
+}
diff --git a/SGGL/Model/Model.cs b/SGGL/Model/Model.cs
index d6b5c2da..403ea306 100644
--- a/SGGL/Model/Model.cs
+++ b/SGGL/Model/Model.cs
@@ -57635,6 +57635,8 @@ namespace Model
private string _ReasonAnalysis;
+ private string _DataSource;
+
private EntityRef _Base_Project;
private EntityRef _Sys_User;
@@ -57697,6 +57699,8 @@ namespace Model
partial void OnIsUpdateChanged();
partial void OnReasonAnalysisChanging(string value);
partial void OnReasonAnalysisChanged();
+ partial void OnDataSourceChanging(string value);
+ partial void OnDataSourceChanged();
#endregion
public Check_CheckControl()
@@ -58235,6 +58239,26 @@ namespace Model
}
}
+ [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DataSource", DbType="Char(1)")]
+ public string DataSource
+ {
+ get
+ {
+ return this._DataSource;
+ }
+ set
+ {
+ if ((this._DataSource != value))
+ {
+ this.OnDataSourceChanging(value);
+ this.SendPropertyChanging();
+ this._DataSource = value;
+ this.SendPropertyChanged("DataSource");
+ this.OnDataSourceChanged();
+ }
+ }
+ }
+
[global::System.Data.Linq.Mapping.AssociationAttribute(Name="FK_Check_CheckControl_Base_Project", Storage="_Base_Project", ThisKey="ProjectId", OtherKey="ProjectId", IsForeignKey=true)]
public Base_Project Base_Project
{
diff --git a/SGGL/Model/Model.csproj b/SGGL/Model/Model.csproj
index 4e409fe3..a2cebe6a 100644
--- a/SGGL/Model/Model.csproj
+++ b/SGGL/Model/Model.csproj
@@ -219,9 +219,12 @@
+
+
+
diff --git a/SGGL/WebAPI/Controllers/DataShare/CQMS/CheckControlSyncController.cs b/SGGL/WebAPI/Controllers/DataShare/CQMS/CheckControlSyncController.cs
new file mode 100644
index 00000000..a9ef8191
--- /dev/null
+++ b/SGGL/WebAPI/Controllers/DataShare/CQMS/CheckControlSyncController.cs
@@ -0,0 +1,136 @@
+using BLL;
+using System;
+using System.Linq;
+using System.Web.Http;
+using System.Threading.Tasks;
+
+namespace WebAPI.Controllers
+{
+ ///
+ /// 质量巡检同步控制器
+ ///
+ public class CheckControlSyncController : ApiController
+ {
+ #region 拉取质量巡检数据
+
+ ///
+ /// 拉取质量巡检数据
+ ///
+ /// 响应数据
+ [HttpGet]
+ public Model.ResponeData getCheckControlLists()
+ {
+ var responeData = new Model.ResponeData();
+ try
+ {
+ responeData.code = 1;
+ responeData.data = APICheckControlSyncService.getCheckControlLists();
+ }
+ catch (Exception ex)
+ {
+ responeData.code = 0;
+ responeData.message = ex.Message;
+ }
+
+ return responeData;
+ }
+
+ #endregion
+
+
+ #region 获取质量巡检数据根据项目id和单位统一社会代码
+
+ ///
+ /// 获取质量巡检数据根据项目id和单位统一社会代码
+ ///
+ /// 项目ID
+ /// 单位社会统一信用代码
+ /// 响应数据
+ [HttpGet]
+ public Model.ResponeData getCheckControlListByProjectIdAndCollCropCode(string projectId, string collCropCode)
+ {
+ var responeData = new Model.ResponeData();
+ try
+ {
+ responeData.code = 1;
+ var unit = BLL.Funs.DB.Base_Unit.FirstOrDefault(x => x.CollCropCode == collCropCode);
+ if (unit != null)
+ {
+ responeData.data = APICheckControlSyncService.GetCheckControlListsByProjectIdUnitIdPage(projectId, unit.UnitId);
+ }
+ else
+ {
+ responeData.code = 0;
+ responeData.message = "未找到对应单位";
+ }
+ }
+ catch (Exception ex)
+ {
+ responeData.code = 0;
+ responeData.message = ex.Message;
+ }
+
+ return responeData;
+ }
+
+ #endregion
+
+
+ #region 推送质量巡检数据
+
+ ///
+ /// 推送质量巡检数据
+ ///
+ /// 项目ID
+ /// 数据ID(可选)
+ /// 响应数据
+ [HttpPost]
+ public Model.ResponeData pushCheckControlLists(string projectId, string dataId)
+ {
+ var responeData = new Model.ResponeData();
+ try
+ {
+ var returndata = APICheckControlSyncService.pushCheckControlLists(projectId, dataId);
+ responeData.code = returndata.code;
+ responeData.message = returndata.message;
+ }
+ catch (Exception ex)
+ {
+ responeData.code = 0;
+ responeData.message = ex.Message;
+ }
+
+ return responeData;
+ }
+
+ #endregion
+
+
+ #region 接收保存质量巡检数据
+
+ ///
+ /// 接收保存质量巡检数据
+ ///
+ /// 质量巡检同步数据
+ /// 响应数据
+ [HttpPost]
+ public Model.ResponeData SaveCheckControlSyncData([FromBody] Model.CheckControlSyncData newItem)
+ {
+ var responeData = new Model.ResponeData();
+ try
+ {
+ responeData.code = 1;
+ responeData.message = APICheckControlSyncService.SaveCheckControlSyncData(newItem);
+ }
+ catch (Exception ex)
+ {
+ responeData.code = 0;
+ responeData.message = ex.Message;
+ }
+
+ return responeData;
+ }
+
+ #endregion
+ }
+}
diff --git a/SGGL/WebAPI/Web.config b/SGGL/WebAPI/Web.config
index 85d2a6d1..7eaa0002 100644
--- a/SGGL/WebAPI/Web.config
+++ b/SGGL/WebAPI/Web.config
@@ -10,7 +10,7 @@
-
+
diff --git a/SGGL/WebAPI/WebAPI.csproj b/SGGL/WebAPI/WebAPI.csproj
index 44cdfc76..e682cec8 100644
--- a/SGGL/WebAPI/WebAPI.csproj
+++ b/SGGL/WebAPI/WebAPI.csproj
@@ -156,6 +156,7 @@
+