using Model; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Pub_Class; using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Web.Http; using WebAPI.Models; using Tea; using AlibabaCloud.SDK.Dingtalkyida_1_0.Models; using AlibabaCloud.SDK.Dingtalkoauth2_1_0.Models; using DingTalk.Api.Request; using DingTalk.Api; using DingTalk.Api.Response; using System.Globalization; namespace WebAPI.Controllers { //钉钉数据同步 public class DD_DataSynchronizationController : ApiController { //获取系统参数 Pub_Class.ClsXt_SystemParameter oSystemParameter = new Pub_Class.ClsXt_SystemParameter(); public DBUtility.ClsPub.Enum_BillStatus BillStatus; private json objJsonResult = new json(); SQLHelper.ClsCN oCN = new SQLHelper.ClsCN(); DataSet ds; public static AlibabaCloud.SDK.Dingtalkworkflow_1_0.Client CreateClient1() { AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config(); config.Protocol = "https"; config.RegionId = "central"; return new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Client(config); } public static AlibabaCloud.SDK.Dingtalkoauth2_1_0.Client CreateClient2() { AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config(); config.Protocol = "https"; config.RegionId = "central"; return new AlibabaCloud.SDK.Dingtalkoauth2_1_0.Client(config); } public static AlibabaCloud.SDK.Dingtalkhrm_1_0.Client CreateClient3() { AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config(); config.Protocol = "https"; config.RegionId = "central"; return new AlibabaCloud.SDK.Dingtalkhrm_1_0.Client(config); } public static AlibabaCloud.SDK.Dingtalkyida_1_0.Client CreateClient4() { AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config(); config.Protocol = "https"; config.RegionId = "central"; return new AlibabaCloud.SDK.Dingtalkyida_1_0.Client(config); } public static AlibabaCloud.SDK.Dingtalkyida_1_0.Client CreateClient5() { AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config(); config.Protocol = "https"; config.RegionId = "central"; return new AlibabaCloud.SDK.Dingtalkyida_1_0.Client(config); } #region 变量 private string AppKey = "dingiokapm2dvjrhzl2g"; //已创建的企业内部应用的AppKey。 private string AppSecret = "dPUD7tN3BGVYAC4lDzhpcBH7O4FWFDdjLJWa6cVRBQj5U7GJ4Gwr7Vohnv0oPBOr"; //已创建的企业内部应用的AppSecret。 private long AgentID = 3188176952; //应用的AgentId private string accessToken = ""; //调用该接口的访问凭证。 private string ProcessInstanceId = ""; //审批实例ID。 #endregion #region 模型类 public class YD_GetInstanceIDListResponse { public long? TotalCount; public long? PageNumber; public List Data; } #region 分层审核签到表 public class YD_FenCengShenHeQianDaoBiao { //单据信息 public string HMakerID; //创建人ID public string HMaker; //创建人名称 public string HMakeDate; //创建日期 public string HUpdaterID; //修改人ID public string HUpdater; //修改人名称 public string HUpdateDate; //修改日期 public string HInstanceID; //单据实例ID public string HOriginator; //发起人 public string HTitle; //单据标题 public string HInstanceStatus; //实例状态 public string HApprovedResult; //审批结果 //单据内容 public string HDate; //日期 public string HCheckLevel; //审核等级 public string HArea; //区域 public string HEmployeeID; //成员ID public string HEmplpyee; //成员名称 } #endregion #region 现场变化点评审单 public class YD_XianChangBianHuaDianPingShenDan { //单据信息 public string HMakerID; //创建人ID public string HMaker; //创建人名称 public string HMakeDate; //创建日期 public string HUpdaterID; //修改人ID public string HUpdater; //修改人名称 public string HUpdateDate; //修改日期 public string HInstanceID; //单据实例ID public string HOriginator; //发起人 public string HTitle; //单据标题 public string HInstanceStatus; //实例状态 public string HApprovedResult; //审批结果 //单据内容 public string HDate; //日期 public string HDept; //车间 public string HChangeType; //变化点类别 public string HRiskLevel; //风险等级 public string HChangeContent; //现场变化点内容 public string HRiskRemark_Safe; //安全风险评估 public string HRiskRemark_Study; //研发部风险评估 public string HRiskRemark_Quality; //品保部风险评估 public string HRiskRemark_Equipment; //设备部风险评估 public string HRiskRemark_Product; //生产部风险评估 public string HRiskRemak_Result; //风险评估评审结果 } #endregion #region 分层审核(LPA)管理 public class YD_FenCengShenHeGuanLi { //单据信息 public string HMakerID; //创建人ID public string HMaker; //创建人名称 public string HMakeDate; //创建日期 public string HUpdaterID; //修改人ID public string HUpdater; //修改人名称 public string HUpdateDate; //修改日期 public string HInstanceID; //单据实例ID public string HOriginator; //发起人 public string HTitle; //单据标题 public string HInstanceStatus; //实例状态 public string HApprovedResult; //审批结果 //单据内容 public string HEmployeeID; //成员ID public string HEmployee; //成员名称 public string HDate; //日期 public string HCheckLevel; //审核层级 public string HCheckArea; //审核区域 public string HPhoto_NoSatisfyRequire; //不符合证据-照片 public string HDescription_NoSatisfyRequire; //不符合项说明 public string HQuestionType; //问题分类 public string HRequire_ModifyDate; //整改时效要求 public string HEmployeeID_Duty; //整改责任人ID public string HEmployee_Duty; //整改责任人 public string HQuestionIsNoModify; //问题是否无法整改 public string HReason_NoModify; //无法整改原因 public string HReasonAnalysis; //原因分析 public string HMethod_Modify; //整改措施 public string HDate_Achieve; //计划完成时间 public string HFile_Evidence; //证据文件 public string HCloseConfirm; //关闭验证 } #endregion #region QRQC问题提交表 public class YD_QRQCWenTiTiJiaoBiao { //单据信息 public string HMakerID; //创建人ID public string HMaker; //创建人名称 public string HMakeDate; //创建日期 public string HUpdaterID; //修改人ID public string HUpdater; //修改人名称 public string HUpdateDate; //修改日期 public string HInstanceID; //单据实例ID public string HOriginator; //发起人 public string HTitle; //单据标题 public string HInstanceStatus; //实例状态 public string HApprovedResult; //审批结果 //单据内容 public string HQuestionType; //问题分类 public string HDept_Duty; //责任部门 public List HQuestion_Commit; //问题提交人填写数据 public List HQuestion_Duty; //问题责任人填写数据 } public class YD_QRQCWenTiTiJiaoBiaoSub1 { public string HProjectNo; //项目编号 public string HProjectGroup; //项目组 public string HArea; //发生区域 public string HDate; //发生日期 public string HIsRepeatQuestion; //是否重复性问题 public string HDescription; //问题描述 } public class YD_QRQCWenTiTiJiaoBiaoSub2 { public string HMethod_Cur; //应急措施 public string HDate_Cur; //计划完成时间(应急措施) public string HReasonAnalysis; //原因分析 public string HMethod_Long; //长期措施 public string HDate_Long; //计划完成时间(时间措施) } #endregion #region 花名册 public class DD_HuaMingCe { public string HEmployeeID; public string HEmployeeName; public string HAge; public string HStudyLevel; public string HDept; public string HWorkAge; } #endregion #endregion #region 钉钉 通用操作方法 #region 获取指定日期的时间戳(毫秒) public long getTimeMillions(DateTime dateTime) { DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); TimeSpan timeSpan = dateTime.ToUniversalTime() - epoch; return (long)timeSpan.TotalMilliseconds; } #endregion #region 根据时间戳(以毫秒为单位)转换为指定时区的日期格式(默认转为东八区时间格式) public string convertFromMillisecondsToDateString(double unixTimeStamp,string format,string timeZoneId = "China Standard Time") { //将时间戳转换为默认时区的时间 DateTime dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc); //dtDateTime = dtDateTime.AddSeconds(unixTimeStamp).ToUniversalTime(); //时间戳以秒为单位 dtDateTime = dtDateTime.AddMilliseconds(unixTimeStamp).ToUniversalTime(); //时间戳以毫秒为单位 // 获取目标时区信息 TimeZoneInfo targetTimeZone = TimeZoneInfo.FindSystemTimeZoneById(timeZoneId); // 转换为目标时区的时间 DateTimeOffset targetDateTime = TimeZoneInfo.ConvertTimeFromUtc(dtDateTime, targetTimeZone); string DateString = targetDateTime.ToString(format, CultureInfo.InvariantCulture); return DateString; } #endregion #region 获取企业内部应用的accessToken。 public void getAccessToken() { AlibabaCloud.SDK.Dingtalkoauth2_1_0.Client client = CreateClient2(); AlibabaCloud.SDK.Dingtalkoauth2_1_0.Models.GetAccessTokenRequest getAccessTokenRequest = new AlibabaCloud.SDK.Dingtalkoauth2_1_0.Models.GetAccessTokenRequest { AppKey = this.AppKey, //已创建的企业内部应用的AppKey。 AppSecret = this.AppSecret, //已创建的企业内部应用的AppSecret。 }; try { GetAccessTokenResponse accessToken = client.GetAccessToken(getAccessTokenRequest); this.accessToken = accessToken.Body.AccessToken; } catch (TeaException err) { if (!AlibabaCloud.TeaUtil.Common.Empty(err.Code) && !AlibabaCloud.TeaUtil.Common.Empty(err.Message)) { // err 中含有 code 和 message 属性,可帮助开发定位问题 } } catch (Exception _err) { TeaException err = new TeaException(new Dictionary { { "message", _err.Message } }); if (!AlibabaCloud.TeaUtil.Common.Empty(err.Code) && !AlibabaCloud.TeaUtil.Common.Empty(err.Message)) { // err 中含有 code 和 message 属性,可帮助开发定位问题 } } } #endregion #region 获取 钉钉-智能人事 获取在职员工ID列表--指定分页的数据 public bool getEmployeeIDList_Page_DingDing(long offset, long size, ref OapiSmartworkHrmEmployeeQueryonjobResponse response, ref string msg) { try { IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/smartwork/hrm/employee/queryonjob"); OapiSmartworkHrmEmployeeQueryonjobRequest req = new OapiSmartworkHrmEmployeeQueryonjobRequest(); req.StatusList = "2,3,5,-1"; //在职员工状态筛选,可以查询多个状态。不同状态之间使用英文逗号分隔。[2:试用期;3:正式;5:待离职;-1:无状态] req.Offset = offset; //分页游标,从0开始。根据返回结果里的next_cursor是否为空来判断是否还有下一页,且再次调用时offset设置成next_cursor的值。 req.Size = size; //分页大小,最大50。 OapiSmartworkHrmEmployeeQueryonjobResponse rsp = client.Execute(req, this.accessToken); response = rsp; return true; } catch (Exception e) { msg = e.Message; return false; } } #endregion #region 获取 钉钉-智能人事 获取在职员工ID列表 public bool getEmployeeIDList_DingDing(long offset, long size, ref List IDList, ref string msg) { OapiSmartworkHrmEmployeeQueryonjobResponse response = new OapiSmartworkHrmEmployeeQueryonjobResponse(); do { if (getEmployeeIDList_Page_DingDing(offset, size, ref response, ref msg) == false) { return false; } for (int i = 0; i < response.Result.DataList.Count; i++) { IDList.Add(response.Result.DataList[i]); } if (response.Result.NextCursor != 0) { offset = response.Result.NextCursor; } else { break; } } while (true); return true; } #endregion #region 获取 根据职员ID列表批量获取职员详情 --一定数量的 public bool getEmployeeDetailListByEmployeeIDList_DingDing(string IDList, ref OapiSmartworkHrmEmployeeV2ListResponse response, ref string msg) { try { IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/smartwork/hrm/employee/v2/list"); OapiSmartworkHrmEmployeeV2ListRequest req = new OapiSmartworkHrmEmployeeV2ListRequest(); req.UseridList = IDList; req.Agentid = this.AgentID; OapiSmartworkHrmEmployeeV2ListResponse rsp = client.Execute(req, this.accessToken); response = rsp; return true; } catch (Exception e) { msg = e.Message; return false; } } #endregion #endregion #region 宜搭 通用操作方法 #region 获取 宜搭指定单据的实例ID列表--指定分页的数据 public bool getInstanceIDList_Page_YiDa(string appType, string systemToken, string userID, string formUuid, int pageNumber, int pageSize, ref YD_GetInstanceIDListResponse response, ref string msg) { AlibabaCloud.SDK.Dingtalkyida_1_0.Client client = CreateClient4(); AlibabaCloud.SDK.Dingtalkyida_1_0.Models.GetInstanceIdListHeaders getInstanceIdListHeaders = new AlibabaCloud.SDK.Dingtalkyida_1_0.Models.GetInstanceIdListHeaders(); getInstanceIdListHeaders.XAcsDingtalkAccessToken = this.accessToken; AlibabaCloud.SDK.Dingtalkyida_1_0.Models.GetInstanceIdListRequest getInstanceIdListRequest = new AlibabaCloud.SDK.Dingtalkyida_1_0.Models.GetInstanceIdListRequest { //必选属性 AppType = appType, //应用编码。 SystemToken = systemToken, //应用秘钥。 FormUuid = formUuid, //表单ID。 UserId = userID, //用户userid。 ////非必选属性 //ModifiedFromTimeGMT = "23", //修改时间起始值 //ModifiedToTimeGMT = "23", //修改时间终止值。 //Language = "43", //SearchFieldJson = "23", //根据表单内组件值查询。 //InstanceStatus = "32", //实例状态。 //ApprovedResult = "12", //流程审批结果。 //OriginatorId = "12", //根据流程发起人工号查询。 //TaskId = "12", //任务ID。 CreateFromTimeGMT = DateTime.Now.ToString("dd") == "01" ? "2022-01-01" : DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd"), //创建时间起始值。 CreateToTimeGMT = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"), //创建时间终止值。 PageSize = pageSize, //分页大小。 PageNumber = pageNumber, //分页页码 }; try { GetInstanceIdListResponse getInstanceIdListResponse = client.GetInstanceIdListWithOptions(getInstanceIdListRequest, getInstanceIdListHeaders, new AlibabaCloud.TeaUtil.Models.RuntimeOptions()); //MessageBox.Show(JsonConvert.SerializeObject(getInstanceIdListResponse.Body)); response.Data = getInstanceIdListResponse.Body.Data; response.TotalCount = getInstanceIdListResponse.Body.TotalCount; response.PageNumber = getInstanceIdListResponse.Body.PageNumber; return true; } catch (TeaException err) { if (!AlibabaCloud.TeaUtil.Common.Empty(err.Code) && !AlibabaCloud.TeaUtil.Common.Empty(err.Message)) { // err 中含有 code 和 message 属性,可帮助开发定位问题 } msg = "错误代码" + err.Code + ":" + err.Message; return false; } catch (Exception _err) { TeaException err = new TeaException(new Dictionary { { "message", _err.Message } }); if (!AlibabaCloud.TeaUtil.Common.Empty(err.Code) && !AlibabaCloud.TeaUtil.Common.Empty(err.Message)) { // err 中含有 code 和 message 属性,可帮助开发定位问题 } msg = "错误代码" + err.Code + ":" + err.Message; return false; } } #endregion #region 获取 宜搭指定单据的实例ID列表 public bool getInstanceIDList_YiDa(string appType, string systemToken, string userID, string formUuid, int pageNumber, int pageSize, ref List IDList, ref string msg) { YD_GetInstanceIDListResponse response = new YD_GetInstanceIDListResponse(); do { if (getInstanceIDList_Page_YiDa(appType, systemToken, userID, formUuid, pageNumber, pageSize, ref response, ref msg) == false) { return false; } for (int i = 0; i < response.Data.Count; i++) { IDList.Add(response.Data[i]); } pageNumber = (int)response.PageNumber + 1; } while (response.Data.Count != 0); return true; } #endregion #region 获取 宜搭 根据实例ID列表批量获取实例详情 --一定数量的 public bool getInstanceDetailListByInstanceIDList_YiDa(string appType, string systemToken, string formUuid, string userID, List IDList, ref BatchGetFormDataByIdListResponse response, ref string msg) { AlibabaCloud.SDK.Dingtalkyida_1_0.Client client = CreateClient5(); AlibabaCloud.SDK.Dingtalkyida_1_0.Models.BatchGetFormDataByIdListHeaders batchGetFormDataByIdListHeaders = new AlibabaCloud.SDK.Dingtalkyida_1_0.Models.BatchGetFormDataByIdListHeaders(); batchGetFormDataByIdListHeaders.XAcsDingtalkAccessToken = this.accessToken; AlibabaCloud.SDK.Dingtalkyida_1_0.Models.BatchGetFormDataByIdListRequest batchGetFormDataByIdListRequest = new AlibabaCloud.SDK.Dingtalkyida_1_0.Models.BatchGetFormDataByIdListRequest { SystemToken = systemToken, FormUuid = formUuid, FormInstanceIdList = IDList, UserId = userID, AppType = appType, }; try { BatchGetFormDataByIdListResponse batchGetFormDataByIdListResponse = client.BatchGetFormDataByIdListWithOptions(batchGetFormDataByIdListRequest, batchGetFormDataByIdListHeaders, new AlibabaCloud.TeaUtil.Models.RuntimeOptions()); response = batchGetFormDataByIdListResponse; return true; } catch (TeaException err) { if (!AlibabaCloud.TeaUtil.Common.Empty(err.Code) && !AlibabaCloud.TeaUtil.Common.Empty(err.Message)) { // err 中含有 code 和 message 属性,可帮助开发定位问题 } msg = "错误代码" + err.Code + ":" + err.Message; return false; } catch (Exception _err) { TeaException err = new TeaException(new Dictionary { { "message", _err.Message } }); if (!AlibabaCloud.TeaUtil.Common.Empty(err.Code) && !AlibabaCloud.TeaUtil.Common.Empty(err.Message)) { // err 中含有 code 和 message 属性,可帮助开发定位问题 } msg = "错误代码" + err.Code + ":" + err.Message; return false; } } #endregion #region 获取 宜搭 根据实例ID获取实例详情 public bool getInstanceDetailByInstanceID_FenCengShenHeQianDaoDan__YiDa(string appType, string systemToken, string userID, string instanceID, ref string msg) { AlibabaCloud.SDK.Dingtalkyida_1_0.Client client = CreateClient5(); AlibabaCloud.SDK.Dingtalkyida_1_0.Models.GetFormDataByIDHeaders getFormDataByIDHeaders = new AlibabaCloud.SDK.Dingtalkyida_1_0.Models.GetFormDataByIDHeaders(); getFormDataByIDHeaders.XAcsDingtalkAccessToken = this.accessToken; AlibabaCloud.SDK.Dingtalkyida_1_0.Models.GetFormDataByIDRequest getFormDataByIDRequest = new AlibabaCloud.SDK.Dingtalkyida_1_0.Models.GetFormDataByIDRequest { AppType = appType, //应用编码。 SystemToken = systemToken, //应用秘钥。 UserId = userID, //用户的userid。 }; try { GetFormDataByIDResponse getFormDataByIDResponse = client.GetFormDataByIDWithOptions(instanceID, getFormDataByIDRequest, getFormDataByIDHeaders, new AlibabaCloud.TeaUtil.Models.RuntimeOptions()); return true; } catch (TeaException err) { if (!AlibabaCloud.TeaUtil.Common.Empty(err.Code) && !AlibabaCloud.TeaUtil.Common.Empty(err.Message)) { // err 中含有 code 和 message 属性,可帮助开发定位问题 } msg = "错误代码" + err.Code + ":" + err.Message; return false; } catch (Exception _err) { TeaException err = new TeaException(new Dictionary { { "message", _err.Message } }); if (!AlibabaCloud.TeaUtil.Common.Empty(err.Code) && !AlibabaCloud.TeaUtil.Common.Empty(err.Message)) { // err 中含有 code 和 message 属性,可帮助开发定位问题 } msg = "错误代码" + err.Code + ":" + err.Message; return false; } } #endregion #region 获取 宜搭 根据流程实例ID获取流程实例 public bool getInstanceStatusByInstanceID__YiDa(string appType, string systemToken, string userID, string instanceID, ref GetInstanceByIdResponse response, ref string msg) { AlibabaCloud.SDK.Dingtalkyida_1_0.Client client = CreateClient5(); AlibabaCloud.SDK.Dingtalkyida_1_0.Models.GetInstanceByIdHeaders getInstanceByIdHeaders = new AlibabaCloud.SDK.Dingtalkyida_1_0.Models.GetInstanceByIdHeaders(); getInstanceByIdHeaders.XAcsDingtalkAccessToken = this.accessToken; AlibabaCloud.SDK.Dingtalkyida_1_0.Models.GetInstanceByIdRequest getInstanceByIdRequest = new AlibabaCloud.SDK.Dingtalkyida_1_0.Models.GetInstanceByIdRequest { SystemToken = systemToken, Language = "12", UserId = userID, AppType = appType, }; try { GetInstanceByIdResponse getInstanceByIdResponse = client.GetInstanceByIdWithOptions(instanceID, getInstanceByIdRequest, getInstanceByIdHeaders, new AlibabaCloud.TeaUtil.Models.RuntimeOptions()); response = getInstanceByIdResponse; return true; } catch (TeaException err) { if (!AlibabaCloud.TeaUtil.Common.Empty(err.Code) && !AlibabaCloud.TeaUtil.Common.Empty(err.Message)) { // err 中含有 code 和 message 属性,可帮助开发定位问题 } msg = err.Message; return false; } catch (Exception _err) { TeaException err = new TeaException(new Dictionary { { "message", _err.Message } }); if (!AlibabaCloud.TeaUtil.Common.Empty(err.Code) && !AlibabaCloud.TeaUtil.Common.Empty(err.Message)) { // err 中含有 code 和 message 属性,可帮助开发定位问题 } msg = _err.Message; return false; } } #endregion #endregion #region 数据同步方法 #region 数据同步-分层审核签到表 #region 获取 宜搭-分层审核签到表 实例ID列表对应的实例详情 public bool getInstanceDetailList_FenCengShenHeQianDaoDan__YiDa(string appType, string systemToken, string userID, string formUuid, List IDList,ref List lsmain, ref string msg, int size = 500) { try { int startIndex = 0; int endIndex = startIndex + size; if (endIndex > IDList.Count) { endIndex = IDList.Count; } while (startIndex < endIndex && endIndex <= IDList.Count) { List IDList_temp = new List(); for (int i = startIndex; i < endIndex; i++) { IDList_temp.Add(IDList[i]); } BatchGetFormDataByIdListResponse response = new BatchGetFormDataByIdListResponse(); if (getInstanceDetailListByInstanceIDList_YiDa(appType, systemToken, formUuid, userID, IDList_temp, ref response, ref msg) == false) { return false; } for (int i = 0; i < response.Body.Result.Count; i++) { try { List keys = new List(response.Body.Result[i].FormData.Keys); YD_FenCengShenHeQianDaoBiao oItem = new YD_FenCengShenHeQianDaoBiao(); oItem.HMakerID = response.Body.Result[i].CreatorUserId.Replace("'", ""); oItem.HMaker = response.Body.Result[i].CreatorUserId.Replace("'", ""); oItem.HMakeDate = response.Body.Result[i].CreateTimeGMT.Replace("T", " ").Replace("Z", "").Replace("'", ""); oItem.HUpdaterID = response.Body.Result[i].ModifyUser.UserId.Replace("'", ""); oItem.HUpdater = response.Body.Result[i].ModifyUser.Name.NameInChinese.Replace("'", ""); ; oItem.HUpdateDate = response.Body.Result[i].ModifiedTimeGMT.Replace("T", " ").Replace("Z", "").Replace("'", ""); ; oItem.HInstanceID = response.Body.Result[i].FormInstanceId.Replace("'", ""); ; oItem.HOriginator = response.Body.Result[i].Originator.Name.NameInChinese.Replace("'", ""); ; int startindex = response.Body.Result[i].Title.IndexOf("zh_CN") + 8; oItem.HTitle = startIndex + response.Body.Result[i].Title.Substring(startindex).Replace("\"}", "").Replace("'", ""); //审核签到表 //if (keys.Contains("dateField_lo6w37hk")) //{ // double HDate_Temp = double.Parse(response.Body.Result[i].FormData["dateField_lo6w37hk"].ToString()); // oItem.HDate = convertFromMillisecondsToDateString(HDate_Temp, "yyyy-MM-dd"); //} //if (keys.Contains("selectField_lockncvh_id")) //{ // oItem.HArea = response.Body.Result[i].FormData["selectField_lockncvh_id"].ToString().Replace("'", ""); //} //if (keys.Contains("selectField_lockncvg_id")) //{ // oItem.HCheckLevel = response.Body.Result[i].FormData["selectField_lockncvg_id"].ToString().Replace("'", ""); //} //if (keys.Contains("employeeField_lo6w37hf")) //{ // oItem.HEmplpyee = ((List)response.Body.Result[i].FormData["employeeField_lo6w37hf"])[0].ToString().Replace("'",""); //} //if (keys.Contains("employeeField_lo6w37hf_id")) //{ // oItem.HEmployeeID = ((List)response.Body.Result[i].FormData["employeeField_lo6w37hf_id"])[0].ToString().Replace("'", ""); //} //签到表 if (keys.Contains("dateField_ls9ma7h3")) { double HDate_Temp = double.Parse(response.Body.Result[i].FormData["dateField_ls9ma7h3"].ToString()); oItem.HDate = convertFromMillisecondsToDateString(HDate_Temp, "yyyy-MM-dd"); } if (keys.Contains("selectField_ls9ma7h9")) { oItem.HArea = response.Body.Result[i].FormData["selectField_ls9ma7h9"].ToString().Replace("'", ""); } if (keys.Contains("selectField_ls9ma7h7")) { oItem.HCheckLevel = response.Body.Result[i].FormData["selectField_ls9ma7h7"].ToString().Replace("'", ""); } if (keys.Contains("employeeField_ls9ma7h5")) { oItem.HEmplpyee = ((List)response.Body.Result[i].FormData["employeeField_ls9ma7h5"])[0].ToString().Replace("'", ""); } if (keys.Contains("employeeField_ls9ma7h5_id")) { oItem.HEmployeeID = ((List)response.Body.Result[i].FormData["employeeField_ls9ma7h5_id"])[0].ToString().Replace("'", ""); } //获取实例状态 GetInstanceByIdResponse response1 = new GetInstanceByIdResponse(); if (getInstanceStatusByInstanceID__YiDa(appType, systemToken, userID, oItem.HInstanceID, ref response1, ref msg) == false) { return false; } oItem.HInstanceStatus = response1.Body.InstanceStatus; if (oItem.HInstanceStatus == "RUNNING") { oItem.HInstanceStatus = "运行中"; } else if (oItem.HInstanceStatus == "TERMINATED") { oItem.HInstanceStatus = "已终止"; } else if (oItem.HInstanceStatus == "COMPLETED") { oItem.HInstanceStatus = "已完成"; } else if (oItem.HInstanceStatus == "ERROR") { oItem.HInstanceStatus = "异常"; } oItem.HApprovedResult = response1.Body.ApprovedResult; if (oItem.HApprovedResult == "agree") { oItem.HApprovedResult = "同意"; } else if (oItem.HApprovedResult == "disagree") { oItem.HApprovedResult = "拒绝"; } else { oItem.HApprovedResult = ""; } lsmain.Add(oItem); }catch(Exception e) { continue; } } startIndex = endIndex; endIndex += size; if (endIndex > IDList.Count) { endIndex = IDList.Count; } } return true; }catch(Exception e) { msg = e.Message; return false; } } #endregion #region 数据同步 public bool getData_FenCengShenHeQianDaoBiao(ref string msg) { //获取 分层审核表 实例ID列表 string appType = "APP_MMBPP3IFGFBX3VQAIKYX"; string systemToken = "TP866A81107FVI9LBFQRZ9953YWZ2GYR2W6OL1L"; string userID = "1933673646699149"; //string formUuid = "FORM-IQ8666B17ZZE7NQSA01K3DUN78UI3J1Z2W6OLX"; //分层审核签到表 string formUuid = "FORM-A01FFB0B63A34F18B7753F695F49190DJEY7"; //签到表 int pageNumber = 1; int pageSize = 100; //获取分层审核表的实例ID列表 List IDList = new List(); if (getInstanceIDList_YiDa(appType, systemToken, userID, formUuid, pageNumber, pageSize, ref IDList, ref msg) == false) { return false; } //获取详细信息并附加到列表lsmain中 List lsmain = new List(); if(getInstanceDetailList_FenCengShenHeQianDaoDan__YiDa(appType, systemToken, userID, formUuid, IDList, ref lsmain, ref msg) == false) { return false; } try { oCN.BeginTran(); foreach (YD_FenCengShenHeQianDaoBiao oItem in lsmain) { string sql_searchRepeat = "select * from DD_FenCengShenHeQianDaoBiao where HInstanceID = '" + oItem.HInstanceID + "'"; DataSet ds_searchRepeat = oCN.RunProcReturn(sql_searchRepeat, "DD_FenCengShenHeQianDaoBiao"); if (ds_searchRepeat != null && ds_searchRepeat.Tables[0].Rows.Count > 0) { string sql_deleteRepeat = "delete from DD_FenCengShenHeQianDaoBiao where HInstanceID = '" + oItem.HInstanceID + "'"; oCN.RunProc(sql_deleteRepeat); } string sql_main = "insert into DD_FenCengShenHeQianDaoBiao" + "(HMakerID,HMakeDate,HUpdaterID,HUpdater,HUpdateDate,HInstanceID,HOriginator,HTitle" + ",HDate" + ",HCheckLevel,HArea,HEmployeeID,HEmplpyee" + ",HInstanceStatus,HApprovedResult) " + "values(" + "'" + oItem.HMakerID + "'" + ",'" + oItem.HMakeDate + "'" + ",'" + oItem.HUpdaterID + "'" + ",'" + oItem.HUpdater + "'" + ",'" + oItem.HUpdateDate + "'" + ",'" + oItem.HInstanceID + "'" + ",'" + oItem.HOriginator + "'" + ",'" + oItem.HTitle + "'" + "," + (oItem.HDate==null?"null":"'" + oItem.HDate + "'") + "" + ",'" + (oItem.HCheckLevel==null?"": oItem.HCheckLevel) + "'" + ",'" + (oItem.HArea==null?"": oItem.HArea) + "'" + ",'" + (oItem.HEmployeeID==null?"": oItem.HEmployeeID) + "'" + ",'" + (oItem.HEmplpyee==null?"": oItem.HEmplpyee) + "'" + ",'" + (oItem.HInstanceStatus == null ? "" : oItem.HInstanceStatus) + "'" + ",'" + (oItem.HApprovedResult == null ? "" : oItem.HApprovedResult) + "'" + ")"; oCN.RunProc(sql_main); } oCN.Commit(); return true; }catch(Exception e) { msg = e.Message; oCN.RollBack(); return false; } } #endregion #endregion #region 数据同步-现场变化点评审单 #region 获取 宜搭-现场变化点评审单 实例ID列表对应的实例详情 public bool getInstanceDetailList_XianChangBianHuaDianPingShenDan__YiDa(string appType, string systemToken, string userID, string formUuid, List IDList, ref List lsmain, ref string msg, int size = 500) { try { int startIndex = 0; int endIndex = startIndex + size; if (endIndex > IDList.Count) { endIndex = IDList.Count; } while (startIndex < endIndex && endIndex <= IDList.Count) { List IDList_temp = new List(); for (int i = startIndex; i < endIndex; i++) { IDList_temp.Add(IDList[i]); } BatchGetFormDataByIdListResponse response = new BatchGetFormDataByIdListResponse(); if (getInstanceDetailListByInstanceIDList_YiDa(appType, systemToken, formUuid, userID, IDList_temp, ref response, ref msg) == false) { return false; } for (int i = 0; i < response.Body.Result.Count; i++) { try { List keys = new List(response.Body.Result[i].FormData.Keys); YD_XianChangBianHuaDianPingShenDan oItem = new YD_XianChangBianHuaDianPingShenDan(); oItem.HMakerID = response.Body.Result[i].CreatorUserId.Replace("'", ""); oItem.HMaker = response.Body.Result[i].CreatorUserId.Replace("'", ""); oItem.HMakeDate = response.Body.Result[i].CreateTimeGMT.Replace("T", " ").Replace("Z", "").Replace("'", ""); oItem.HUpdaterID = response.Body.Result[i].ModifyUser.UserId.Replace("'", ""); oItem.HUpdater = response.Body.Result[i].ModifyUser.Name.NameInChinese.Replace("'", ""); ; oItem.HUpdateDate = response.Body.Result[i].ModifiedTimeGMT.Replace("T", " ").Replace("Z", "").Replace("'", ""); ; oItem.HInstanceID = response.Body.Result[i].FormInstanceId.Replace("'", ""); ; oItem.HOriginator = response.Body.Result[i].Originator.Name.NameInChinese.Replace("'", ""); ; int startindex = response.Body.Result[i].Title.IndexOf("zh_CN") + 8; oItem.HTitle = startIndex + response.Body.Result[i].Title.Substring(startindex).Replace("\"}", "").Replace("'", ""); if (keys.Contains("dateField_lxsmpho2")) { double HDate_Temp = double.Parse(response.Body.Result[i].FormData["dateField_lxsmpho2"].ToString()); oItem.HDate = convertFromMillisecondsToDateString(HDate_Temp, "yyyy-MM-dd"); } if (keys.Contains("selectField_lxcx8tq0")) { oItem.HDept = response.Body.Result[i].FormData["selectField_lxcx8tq0"].ToString().Replace("'", ""); } if (keys.Contains("selectField_lxbkk45z")) { oItem.HChangeType = response.Body.Result[i].FormData["selectField_lxbkk45z"].ToString().Replace("'", ""); } if (keys.Contains("selectField_lxbkr5c4")) { oItem.HRiskLevel = response.Body.Result[i].FormData["selectField_lxbkr5c4"].ToString().Replace("'", ""); } if (keys.Contains("textareaField_lxbjmu83")) { oItem.HChangeContent = response.Body.Result[i].FormData["textareaField_lxbjmu83"].ToString().Replace("'", ""); } if (keys.Contains("textareaField_lxbl78z2")) { oItem.HRiskRemark_Safe = response.Body.Result[i].FormData["textareaField_lxbl78z2"].ToString().Replace("'", ""); } if (keys.Contains("textareaField_lxbjmu85")) { oItem.HRiskRemark_Study = response.Body.Result[i].FormData["textareaField_lxbjmu85"].ToString().Replace("'", ""); } if (keys.Contains("textareaField_lxbjmu87")) { oItem.HRiskRemark_Quality = response.Body.Result[i].FormData["textareaField_lxbjmu87"].ToString().Replace("'", ""); } if (keys.Contains("textareaField_lxbjmu89")) { oItem.HRiskRemark_Equipment = response.Body.Result[i].FormData["textareaField_lxbjmu89"].ToString().Replace("'", ""); } if (keys.Contains("textareaField_lxbk94n2")) { oItem.HRiskRemark_Product = response.Body.Result[i].FormData["textareaField_lxbk94n2"].ToString().Replace("'", ""); } if (keys.Contains("textareaField_lxblb9xa")) { oItem.HRiskRemak_Result = response.Body.Result[i].FormData["textareaField_lxblb9xa"].ToString().Replace("'", ""); } //获取实例状态 GetInstanceByIdResponse response1 = new GetInstanceByIdResponse(); if (getInstanceStatusByInstanceID__YiDa(appType, systemToken, userID, oItem.HInstanceID, ref response1, ref msg) == false) { return false; } oItem.HInstanceStatus = response1.Body.InstanceStatus; if (oItem.HInstanceStatus == "RUNNING") { oItem.HInstanceStatus = "运行中"; } else if (oItem.HInstanceStatus == "TERMINATED") { oItem.HInstanceStatus = "已终止"; } else if (oItem.HInstanceStatus == "COMPLETED") { oItem.HInstanceStatus = "已完成"; } else if (oItem.HInstanceStatus == "ERROR") { oItem.HInstanceStatus = "异常"; } oItem.HApprovedResult = response1.Body.ApprovedResult; if (oItem.HApprovedResult == "agree") { oItem.HApprovedResult = "同意"; } else if (oItem.HApprovedResult == "disagree") { oItem.HApprovedResult = "拒绝"; } else { oItem.HApprovedResult = ""; } lsmain.Add(oItem); }catch(Exception e) { continue; } } startIndex = endIndex; endIndex += size; if (endIndex > IDList.Count) { endIndex = IDList.Count; } } return true; } catch (Exception e) { msg = e.Message; return false; } } #endregion #region 数据同步 public bool getData_XianChangBianHuaDianPingShenDan(ref string msg) { //现场变化点评审单 参数信息 string appType = "APP_T6CQONMMH5ME9LM8S656"; string systemToken = "QW766881GKWLNUQWEWT9IBSJLB8X279FE9BXLS4"; string userID = "1933673646699149"; string formUuid = "FORM-E3DFC12364514330A836DD3056C15668UGG7"; int pageNumber = 1; int pageSize = 100; //获取实例ID列表 List IDList = new List(); if (getInstanceIDList_YiDa(appType, systemToken, userID, formUuid, pageNumber, pageSize, ref IDList, ref msg) == false) { return false; } //获取详细信息并附加到列表lsmain中 List lsmain = new List(); if (getInstanceDetailList_XianChangBianHuaDianPingShenDan__YiDa(appType, systemToken, userID, formUuid, IDList, ref lsmain, ref msg) == false) { return false; } try { oCN.BeginTran(); foreach (YD_XianChangBianHuaDianPingShenDan oItem in lsmain) { string sql_searchRepeat = "select * from DD_XianChangBianHuaDianPingShenDan where HInstanceID = '" + oItem.HInstanceID + "'"; DataSet ds_searchRepeat = oCN.RunProcReturn(sql_searchRepeat, "DD_XianChangBianHuaDianPingShenDan"); if (ds_searchRepeat != null && ds_searchRepeat.Tables[0].Rows.Count > 0) { string sql_deleteRepeat = "delete from DD_XianChangBianHuaDianPingShenDan where HInstanceID = '" + oItem.HInstanceID + "'"; oCN.RunProc(sql_deleteRepeat); } string sql_main = "insert into DD_XianChangBianHuaDianPingShenDan" + "(HMakerID,HMakeDate,HUpdaterID,HUpdater,HUpdateDate,HInstanceID,HOriginator,HTitle" + ",HDate" + ",HDept,HChangeType,HRiskLevel,HChangeContent,HRiskRemark_Safe,HRiskRemark_Study,HRiskRemark_Quality,HRiskRemark_Equipment,HRiskRemark_Product,HRiskRemark_Result" + ",HInstanceStatus,HApprovedResult) " + "values(" + "'" + oItem.HMakerID + "'" + ",'" + oItem.HMakeDate + "'" + ",'" + oItem.HUpdaterID + "'" + ",'" + oItem.HUpdater + "'" + ",'" + oItem.HUpdateDate + "'" + ",'" + oItem.HInstanceID + "'" + ",'" + oItem.HOriginator + "'" + ",'" + oItem.HTitle + "'" + "," + (oItem.HDate==null?"null":"'" + oItem.HDate + "'") + "" + ",'" + (oItem.HDept==null?"": oItem.HDept) + "'" + ",'" + (oItem.HChangeType==null?"": oItem.HChangeType) + "'" + ",'" + (oItem.HRiskLevel==null?"": oItem.HRiskLevel )+ "'" + ",'" + (oItem.HChangeContent==null?"": oItem.HChangeContent) + "'" + ",'" + (oItem.HRiskRemark_Safe==null?"": oItem.HRiskRemark_Safe) + "'" + ",'" + (oItem.HRiskRemark_Study==null?"": oItem.HRiskRemark_Study) + "'" + ",'" + (oItem.HRiskRemark_Quality==null?"": oItem.HRiskRemark_Quality) + "'" + ",'" + (oItem.HRiskRemark_Equipment==null?"": oItem.HRiskRemark_Equipment) + "'" + ",'" + (oItem.HRiskRemark_Product==null?"": oItem.HRiskRemark_Product) + "'" + ",'" + (oItem.HRiskRemak_Result==null?"": oItem.HRiskRemak_Result) + "'" + ",'" + (oItem.HInstanceStatus == null ? "" : oItem.HInstanceStatus) + "'" + ",'" + (oItem.HApprovedResult == null ? "" : oItem.HApprovedResult) + "'" + ")"; oCN.RunProc(sql_main); } oCN.Commit(); return true; } catch (Exception e) { msg = e.Message; oCN.RollBack(); return false; } } #endregion #endregion #region 数据同步-分层审核(LPA)管理 #region 获取 宜搭-分层审核(LPA)管理 实例ID列表对应的实例详情 public bool getInstanceDetailList_FenCengShenHeGuanLi__YiDa(string appType, string systemToken, string userID, string formUuid, List IDList, ref List lsmain, ref string msg, int size = 500) { try { int startIndex = 0; int endIndex = startIndex + size; if (endIndex > IDList.Count) { endIndex = IDList.Count; } while (startIndex < endIndex && endIndex <= IDList.Count) { List IDList_temp = new List(); for (int i = startIndex; i < endIndex; i++) { IDList_temp.Add(IDList[i]); } BatchGetFormDataByIdListResponse response = new BatchGetFormDataByIdListResponse(); if (getInstanceDetailListByInstanceIDList_YiDa(appType, systemToken, formUuid, userID, IDList_temp, ref response, ref msg) == false) { return false; } for (int i = 0; i < response.Body.Result.Count; i++) { try { List keys = new List(response.Body.Result[i].FormData.Keys); YD_FenCengShenHeGuanLi oItem = new YD_FenCengShenHeGuanLi(); oItem.HMakerID = response.Body.Result[i].CreatorUserId.Replace("'", ""); oItem.HMaker = response.Body.Result[i].CreatorUserId.Replace("'", ""); oItem.HMakeDate = response.Body.Result[i].CreateTimeGMT.Replace("T", " ").Replace("Z", "").Replace("'", ""); oItem.HUpdaterID = response.Body.Result[i].ModifyUser.UserId.Replace("'", ""); oItem.HUpdater = response.Body.Result[i].ModifyUser.Name.NameInChinese.Replace("'", ""); ; oItem.HUpdateDate = response.Body.Result[i].ModifiedTimeGMT.Replace("T", " ").Replace("Z", "").Replace("'", ""); ; oItem.HInstanceID = response.Body.Result[i].FormInstanceId.Replace("'", ""); ; oItem.HOriginator = response.Body.Result[i].Originator.Name.NameInChinese.Replace("'", ""); ; int startindex = response.Body.Result[i].Title.IndexOf("zh_CN") + 8; oItem.HTitle = startIndex + response.Body.Result[i].Title.Substring(startindex).Replace("\"}", "").Replace("'", ""); if (keys.Contains("employeeField_loz3zrdt")) { oItem.HEmployee = ((List)response.Body.Result[i].FormData["employeeField_loz3zrdt"])[0].ToString().Replace("'", ""); } if (keys.Contains("employeeField_loz3zrdt_id")) { oItem.HEmployeeID = ((List)response.Body.Result[i].FormData["employeeField_loz3zrdt_id"])[0].ToString().Replace("'", ""); } if (keys.Contains("dateField_loz3zrdu")) { double HDate_Temp = double.Parse(response.Body.Result[i].FormData["dateField_loz3zrdu"].ToString()); oItem.HDate = convertFromMillisecondsToDateString(HDate_Temp, "yyyy-MM-dd"); } if (keys.Contains("selectField_ljdtmy2i")) { oItem.HCheckLevel = response.Body.Result[i].FormData["selectField_ljdtmy2i"].ToString().Replace("'", ""); } if (keys.Contains("selectField_ljdn6sgv")) { oItem.HCheckArea = response.Body.Result[i].FormData["selectField_ljdn6sgv"].ToString().Replace("'", ""); } if (keys.Contains("attachmentField_ljdn6sh3")) { oItem.HPhoto_NoSatisfyRequire = response.Body.Result[i].FormData["attachmentField_ljdn6sh3"].ToString().Replace("'", ""); } if (keys.Contains("textareaField_ljdn6sh1")) { oItem.HDescription_NoSatisfyRequire = response.Body.Result[i].FormData["textareaField_ljdn6sh1"].ToString().Replace("'", ""); } if (keys.Contains("selectField_ljdn6sgz")) { oItem.HQuestionType = response.Body.Result[i].FormData["selectField_ljdn6sgz"].ToString().Replace("'", ""); } if (keys.Contains("selectField_ltwahl66")) { oItem.HRequire_ModifyDate = response.Body.Result[i].FormData["selectField_ltwahl66"].ToString().Replace("'", ""); } if (keys.Contains("employeeField_llogutfd_id")) { oItem.HEmployeeID = ((List)response.Body.Result[i].FormData["employeeField_llogutfd_id"])[0].ToString().Replace("'", ""); } if (keys.Contains("employeeField_llogutfd")) { oItem.HEmployee_Duty = ((List)response.Body.Result[i].FormData["employeeField_llogutfd"])[0].ToString().Replace("'", ""); } if (keys.Contains("radioField_lkcbn9ah")) { oItem.HQuestionIsNoModify = response.Body.Result[i].FormData["radioField_lkcbn9ah"].ToString().Replace("'", ""); } if (keys.Contains("textareaField_lkcbn9aj")) { oItem.HReason_NoModify = response.Body.Result[i].FormData["textareaField_lkcbn9aj"].ToString().Replace("'", ""); } if (keys.Contains("textareaField_ljnlv15r")) { oItem.HReasonAnalysis = response.Body.Result[i].FormData["textareaField_ljnlv15r"].ToString().Replace("'", ""); } if (keys.Contains("textareaField_ljdn6sh7")) { oItem.HMethod_Modify = response.Body.Result[i].FormData["textareaField_ljdn6sh7"].ToString().Replace("'", ""); } if (keys.Contains("dateField_ljnmhgqk")) { double HDate_Temp = double.Parse(response.Body.Result[i].FormData["dateField_ljnmhgqk"].ToString()); oItem.HDate_Achieve = convertFromMillisecondsToDateString(HDate_Temp, "yyyy-MM-dd"); } if (keys.Contains("attachmentField_ljdn6sh9")) { oItem.HFile_Evidence = response.Body.Result[i].FormData["attachmentField_ljdn6sh9"].ToString().Replace("'", ""); } if (keys.Contains("selectField_ltpe6mdd")) { oItem.HCloseConfirm = response.Body.Result[i].FormData["selectField_ltpe6mdd"].ToString().Replace("'", ""); } //获取实例状态 GetInstanceByIdResponse response1 = new GetInstanceByIdResponse(); if(getInstanceStatusByInstanceID__YiDa(appType, systemToken, userID, oItem.HInstanceID, ref response1, ref msg) == false) { return false; } oItem.HInstanceStatus = response1.Body.InstanceStatus; if(oItem.HInstanceStatus == "RUNNING") { oItem.HInstanceStatus = "运行中"; }else if(oItem.HInstanceStatus== "TERMINATED") { oItem.HInstanceStatus = "已终止"; } else if (oItem.HInstanceStatus == "COMPLETED") { oItem.HInstanceStatus = "已完成"; } else if (oItem.HInstanceStatus == "ERROR") { oItem.HInstanceStatus = "异常"; } oItem.HApprovedResult = response1.Body.ApprovedResult; if (oItem.HApprovedResult== "agree") { oItem.HApprovedResult = "同意"; }else if(oItem.HApprovedResult== "disagree") { oItem.HApprovedResult = "拒绝"; } else { oItem.HApprovedResult = ""; } lsmain.Add(oItem); } catch (Exception e) { continue; } } startIndex = endIndex; endIndex += size; if (endIndex > IDList.Count) { endIndex = IDList.Count; } } return true; } catch (Exception e) { msg = e.Message; return false; } } #endregion #region 数据同步 public bool getData_FenCengShenHeGuanLi(ref string msg) { //分层审核(LPA)管理 参数信息 string appType = "APP_AA6W6DTMJVDC4VU45Y6O"; string systemToken = "WWA66O91ZLZB7LNG76FJQBONY7SV26HQOMDJL71"; string userID = "1933673646699149"; string formUuid = "FORM-K5766HA1CKZB4E1L64Y1KBWCJTQF2HWJ3NDJL4"; int pageNumber = 1; int pageSize = 100; //获取实例ID列表 List IDList = new List(); if (getInstanceIDList_YiDa(appType, systemToken, userID, formUuid, pageNumber, pageSize, ref IDList, ref msg) == false) { return false; } //获取详细信息并附加到列表lsmain中 List lsmain = new List(); if (getInstanceDetailList_FenCengShenHeGuanLi__YiDa(appType, systemToken, userID, formUuid, IDList, ref lsmain, ref msg) == false) { return false; } try { oCN.BeginTran(); foreach (YD_FenCengShenHeGuanLi oItem in lsmain) { string sql_searchRepeat = "select * from DD_FenCengShenHeGuanLi where HInstanceID = '" + oItem.HInstanceID + "'"; DataSet ds_searchRepeat = oCN.RunProcReturn(sql_searchRepeat, "DD_FenCengShenHeGuanLi"); if (ds_searchRepeat != null && ds_searchRepeat.Tables[0].Rows.Count > 0) { string sql_deleteRepeat = "delete from DD_FenCengShenHeGuanLi where HInstanceID = '" + oItem.HInstanceID + "'"; oCN.RunProc(sql_deleteRepeat); } string sql_main = "insert into DD_FenCengShenHeGuanLi" + "(HMakerID,HMakeDate,HUpdaterID,HUpdater,HUpdateDate,HInstanceID,HOriginator,HTitle,HEmployeeID,HEmployee" + ",HDate" + ",HCheckLevel,HCheckArea,HPhoto_NoSatisfyRequire,HDescription_NoSatisfyRequire,HQuestionType,HRequire_ModifyDate,HEmployeeID_Duty,HEmployee_Duty" + ",HQuestionIsNoModify" + ",HReason_NoModify,HReasonAnalysis,HMethod_Modify" + ",HDate_Achieve,HFile_Evidence,HCloseConfirm,HInstanceStatus,HApprovedResult" + ") " + "values(" + "'" + oItem.HMakerID + "'" + ",'" + oItem.HMakeDate + "'" + ",'" + oItem.HUpdaterID + "'" + ",'" + oItem.HUpdater + "'" + ",'" + oItem.HUpdateDate + "'" + ",'" + oItem.HInstanceID + "'" + ",'" + oItem.HOriginator + "'" + ",'" + oItem.HTitle + "'" + ",'" + (oItem.HEmployeeID==null?"": oItem.HEmployeeID) + "'" + ",'" + (oItem.HEmployee==null?"": oItem.HEmployee) + "'" + "," + (oItem.HDate==null?"null":"'" + oItem.HDate + "'") + "" + ",'" + (oItem.HCheckLevel==null?"": oItem.HCheckLevel) + "'" + ",'" + (oItem.HCheckArea==null?"": oItem.HCheckArea) + "'" + ",'" + (oItem.HPhoto_NoSatisfyRequire==null?"": oItem.HPhoto_NoSatisfyRequire) + "'" + ",'" + (oItem.HDescription_NoSatisfyRequire==null?"": oItem.HDescription_NoSatisfyRequire) + "'" + ",'" + (oItem.HQuestionType==null?"": oItem.HQuestionType) + "'" + ",'" + (oItem.HRequire_ModifyDate==null?"": oItem.HRequire_ModifyDate) + "'" + ",'" + (oItem.HEmployeeID_Duty==null?"": oItem.HEmployeeID_Duty) + "'" + ",'" + (oItem.HEmployee_Duty==null?"": oItem.HEmployee_Duty) + "'" + ",'" + (oItem.HQuestionIsNoModify==null?"": oItem.HQuestionIsNoModify) + "'" + ",'" + (oItem.HReason_NoModify==null?"": oItem.HReason_NoModify) + "'" + ",'" + (oItem.HReasonAnalysis==null?"": oItem.HReasonAnalysis) + "'" + ",'" + (oItem.HMethod_Modify==null?"": oItem.HMethod_Modify) + "'" + "," + (oItem.HDate_Achieve==null?"null":"'"+ oItem.HDate_Achieve+ "'") + "" + ",'" + (oItem.HFile_Evidence==null?"": oItem.HFile_Evidence) + "'" + ",'" + (oItem.HCloseConfirm==null?"": oItem.HCloseConfirm) + "'" + ",'" + (oItem.HInstanceStatus==null?"":oItem.HInstanceStatus) + "'" + ",'" + (oItem.HApprovedResult==null?"":oItem.HApprovedResult) + "'" + ")"; oCN.RunProc(sql_main); } oCN.Commit(); return true; } catch (Exception e) { msg = e.Message; oCN.RollBack(); return false; } } #endregion #endregion #region 数据同步-QRQC问题提交表 #region 获取 宜搭-QRQC问题提交表 实例ID列表对应的实例详情 public bool getInstanceDetailList_QRQCWenTiTiJiaoBiao__YiDa(string appType, string systemToken, string userID, string formUuid, List IDList, ref List lsmain, ref string msg, int size = 500) { try { int startIndex = 0; int endIndex = startIndex + size; if (endIndex > IDList.Count) { endIndex = IDList.Count; } while (startIndex < endIndex && endIndex <= IDList.Count) { List IDList_temp = new List(); for (int i = startIndex; i < endIndex; i++) { IDList_temp.Add(IDList[i]); } BatchGetFormDataByIdListResponse response = new BatchGetFormDataByIdListResponse(); if (getInstanceDetailListByInstanceIDList_YiDa(appType, systemToken, formUuid, userID, IDList_temp, ref response, ref msg) == false) { return false; } for (int i = 0; i < response.Body.Result.Count; i++) { try { List keys_main = new List(response.Body.Result[i].FormData.Keys); YD_QRQCWenTiTiJiaoBiao oItem = new YD_QRQCWenTiTiJiaoBiao(); oItem.HMakerID = response.Body.Result[i].CreatorUserId.Replace("'", ""); oItem.HMaker = response.Body.Result[i].CreatorUserId.Replace("'", ""); oItem.HMakeDate = response.Body.Result[i].CreateTimeGMT.Replace("T", " ").Replace("Z", "").Replace("'", ""); oItem.HUpdaterID = response.Body.Result[i].ModifyUser.UserId.Replace("'", ""); oItem.HUpdater = response.Body.Result[i].ModifyUser.Name.NameInChinese.Replace("'", ""); ; oItem.HUpdateDate = response.Body.Result[i].ModifiedTimeGMT.Replace("T", " ").Replace("Z", "").Replace("'", ""); ; oItem.HInstanceID = response.Body.Result[i].FormInstanceId.Replace("'", ""); ; oItem.HOriginator = response.Body.Result[i].Originator.Name.NameInChinese.Replace("'", ""); ; int startindex = response.Body.Result[i].Title.IndexOf("zh_CN") + 8; oItem.HTitle = startIndex + response.Body.Result[i].Title.Substring(startindex).Replace("\"}", "").Replace("'", ""); if (keys_main.Contains("selectField_lx4azanb")) { oItem.HQuestionType = response.Body.Result[i].FormData["selectField_lx4azanb"].ToString().Replace("'", ""); } if (keys_main.Contains("selectField_lxcunmsu")) { oItem.HDept_Duty = response.Body.Result[i].FormData["selectField_lxcunmsu"].ToString().Replace("'", ""); } //获取实例状态 GetInstanceByIdResponse response1 = new GetInstanceByIdResponse(); if (getInstanceStatusByInstanceID__YiDa(appType, systemToken, userID, oItem.HInstanceID, ref response1, ref msg) == false) { return false; } oItem.HInstanceStatus = response1.Body.InstanceStatus; if (oItem.HInstanceStatus == "RUNNING") { oItem.HInstanceStatus = "运行中"; } else if (oItem.HInstanceStatus == "TERMINATED") { oItem.HInstanceStatus = "已终止"; } else if (oItem.HInstanceStatus == "COMPLETED") { oItem.HInstanceStatus = "已完成"; } else if (oItem.HInstanceStatus == "ERROR") { oItem.HInstanceStatus = "异常"; } oItem.HApprovedResult = response1.Body.ApprovedResult; if (oItem.HApprovedResult == "agree") { oItem.HApprovedResult = "同意"; } else if (oItem.HApprovedResult == "disagree") { oItem.HApprovedResult = "拒绝"; } else { oItem.HApprovedResult = ""; } List sub1List = new List(); if (keys_main.Contains("tableField_lx4azand")) { foreach (Dictionary obj in (List)response.Body.Result[i].FormData["tableField_lx4azand"]) { List keys_sub1 = new List(obj.Keys); YD_QRQCWenTiTiJiaoBiaoSub1 sub1 = new YD_QRQCWenTiTiJiaoBiaoSub1(); if (keys_sub1.Contains("textField_lx4azane")) { sub1.HProjectNo = obj["textField_lx4azane"].ToString().Replace("'", ""); } if (keys_sub1.Contains("selectField_lx4azanf")) { sub1.HProjectGroup = obj["selectField_lx4azanf"].ToString().Replace("'", ""); } if (keys_sub1.Contains("selectField_lx4azang")) { sub1.HArea = obj["selectField_lx4azang"].ToString().Replace("'", ""); } if (keys_sub1.Contains("dateField_lx4azanh")) { double HDate_Temp = double.Parse(obj["dateField_lx4azanh"].ToString()); sub1.HDate = convertFromMillisecondsToDateString(HDate_Temp, "yyyy-MM-dd"); } if (keys_sub1.Contains("selectField_lx4azank")) { sub1.HIsRepeatQuestion = obj["selectField_lx4azank"].ToString().Replace("'", ""); } if (keys_sub1.Contains("textareaField_lx4azani")) { sub1.HDescription = obj["textareaField_lx4azani"].ToString().Replace("'", ""); } sub1List.Add(sub1); } } oItem.HQuestion_Commit = sub1List; List sub2List = new List(); if (keys_main.Contains("tableField_lx4azanj")) { foreach (Dictionary obj in (List)response.Body.Result[i].FormData["tableField_lx4azanj"]) { List keys_sub2 = new List(obj.Keys); YD_QRQCWenTiTiJiaoBiaoSub2 sub2 = new YD_QRQCWenTiTiJiaoBiaoSub2(); if (keys_sub2.Contains("textareaField_lx4azanm")) { sub2.HMethod_Cur = obj["textareaField_lx4azanm"].ToString().Replace("'", ""); } if (keys_sub2.Contains("dateField_lx4azano")) { double HDate_Temp = double.Parse(obj["dateField_lx4azano"].ToString()); sub2.HDate_Cur = convertFromMillisecondsToDateString(HDate_Temp, "yyyy-MM-dd"); } if (keys_sub2.Contains("textareaField_lx4azanl")) { sub2.HReasonAnalysis = obj["textareaField_lx4azanl"].ToString().Replace("'", ""); } if (keys_sub2.Contains("textareaField_lx4azann")) { sub2.HMethod_Long = obj["textareaField_lx4azann"].ToString().Replace("'", ""); } if (keys_sub2.Contains("dateField_lx4azanp")) { double HDate_Temp = double.Parse(obj["dateField_lx4azanp"].ToString()); sub2.HDate_Long = convertFromMillisecondsToDateString(HDate_Temp, "yyyy-MM-dd"); } sub2List.Add(sub2); } } oItem.HQuestion_Duty = sub2List; lsmain.Add(oItem); } catch (Exception e) { continue; } } startIndex = endIndex; endIndex += size; if (endIndex > IDList.Count) { endIndex = IDList.Count; } } return true; } catch (Exception e) { msg = e.Message; return false; } } #endregion #region 数据同步 public bool getData_QRQCWenTiTiJiaoBiao(ref string msg) { //QRQC问题提交表 参数信息 string appType = "APP_WC3R2CL3ZOUF4Q63N1CZ"; string systemToken = "LNB66E81MCRLK1DS7N4ODDH2JRJO3C63SA4XL72"; string userID = "1933673646699149"; string formUuid = "FORM-65AD77453E7F44EA847166C3AB5A1F04IPSS"; int pageNumber = 1; int pageSize = 100; //获取实例ID列表 List IDList = new List(); if (getInstanceIDList_YiDa(appType, systemToken, userID, formUuid, pageNumber, pageSize, ref IDList, ref msg) == false) { return false; } //获取详细信息并附加到列表lsmain中 List lsmain = new List(); if (getInstanceDetailList_QRQCWenTiTiJiaoBiao__YiDa(appType, systemToken, userID, formUuid, IDList, ref lsmain, ref msg) == false) { return false; } try { oCN.BeginTran(); foreach (YD_QRQCWenTiTiJiaoBiao oItem in lsmain) { ////判断单据 实例状态是否为"已完成"且 审批结果为"同意",若是则同步数据,否则不进行同步数据 //if (!(oItem.HInstanceStatus == "已完成" && oItem.HApprovedResult == "同意")) //{ // continue; //} string sql_searchRepeat = "select * from DD_QRQCWenTiTiJiaoBiao where HInstanceID = '" + oItem.HInstanceID + "'"; DataSet ds_searchRepeat = oCN.RunProcReturn(sql_searchRepeat, "DD_QRQCWenTiTiJiaoBiao"); if (ds_searchRepeat != null && ds_searchRepeat.Tables[0].Rows.Count > 0) { string sql_deleteRepeat = "delete from DD_QRQCWenTiTiJiaoBiao where HInstanceID = '" + oItem.HInstanceID + "'"; oCN.RunProc(sql_deleteRepeat); sql_deleteRepeat = "delete from DD_QRQCWenTiTiJiaoBiaoSub1 where HInstanceID = '" + oItem.HInstanceID + "'"; oCN.RunProc(sql_deleteRepeat); sql_deleteRepeat = "delete from DD_QRQCWenTiTiJiaoBiaoSub2 where HInstanceID = '" + oItem.HInstanceID + "'"; oCN.RunProc(sql_deleteRepeat); } string sql_main = "insert into DD_QRQCWenTiTiJiaoBiao" + "(HMakerID,HMakeDate,HUpdaterID,HUpdater,HUpdateDate,HInstanceID,HOriginator,HTitle,HQuestionType,HDept_Duty" + ",HInstanceStatus,HApprovedResult) " + "values(" + "'" + oItem.HMakerID + "'" + ",'" + oItem.HMakeDate + "'" + ",'" + oItem.HUpdaterID + "'" + ",'" + oItem.HUpdater + "'" + ",'" + oItem.HUpdateDate + "'" + ",'" + oItem.HInstanceID + "'" + ",'" + oItem.HOriginator + "'" + ",'" + oItem.HTitle + "'" + ",'" + (oItem.HQuestionType==null?"": oItem.HQuestionType) + "'" + ",'" + (oItem.HDept_Duty==null?"": oItem.HDept_Duty) + "'" + ",'" + (oItem.HInstanceStatus == null ? "" : oItem.HInstanceStatus) + "'" + ",'" + (oItem.HApprovedResult == null ? "" : oItem.HApprovedResult) + "'" + ")"; oCN.RunProc(sql_main); int sub1_Entry = 1; foreach(YD_QRQCWenTiTiJiaoBiaoSub1 sub1 in oItem.HQuestion_Commit) { string sql_sub1 = "insert into DD_QRQCWenTiTiJiaoBiaoSub1" + "(HInstanceID,HEntryID,HProjectNo,HProjectGroup,HArea" + ",HDate" + ",HIsRepeatQuestion,HDescription) " + "values(" + "'" + (oItem.HInstanceID==null?"": oItem.HInstanceID) + "'" + ",'" + (sub1_Entry++) + "'" + ",'" + (sub1.HProjectNo==null?"":sub1.HProjectNo) + "'" + ",'" + (sub1.HProjectGroup==null?"": sub1.HProjectGroup) + "'" + ",'" + (sub1.HArea==null?"": sub1.HArea) + "'" + "," + (sub1.HDate==null?"null":"'" + sub1.HDate + "'") + "" + ",'" + (sub1.HIsRepeatQuestion==null?"": sub1.HIsRepeatQuestion) + "'" + ",'" + (sub1.HDescription==null?"": sub1.HDescription) + "'" + ")"; oCN.RunProc(sql_sub1); } int sub2_Entry = 1; foreach (YD_QRQCWenTiTiJiaoBiaoSub2 sub2 in oItem.HQuestion_Duty) { string sql_sub2 = "insert into DD_QRQCWenTiTiJiaoBiaoSub2" + "(HInstanceID,HEntryID,HMethod_Cur" + ",HDate_Cur" + ",HReasonAnalysis,HMethod_Long" + ",HDate_Long" + ") " + "values(" + "'" + (oItem.HInstanceID == null ? "" : oItem.HInstanceID) + "'" + ",'" + (sub2_Entry++) + "'" + ",'" + (sub2.HMethod_Cur == null ? "" : sub2.HMethod_Cur) + "'" + "," + (sub2.HDate_Cur == null ? "null" : "'" + sub2.HDate_Cur + "'") + "" + ",'" + (sub2.HReasonAnalysis == null ? "" : sub2.HReasonAnalysis) + "'" + ",'" + (sub2.HMethod_Long == null ? "" : sub2.HMethod_Long) + "'" + "," + (sub2.HDate_Long == null ? "null" : "'" + sub2.HDate_Long + "'") + "" + ")"; oCN.RunProc(sql_sub2); } } oCN.Commit(); return true; } catch (Exception e) { msg = e.Message; oCN.RollBack(); return false; } } #endregion #endregion #region 数据同步-钉钉-智能人事-花名册员工信息 #region 获取 根据职员ID列表批量获取职员详情 public bool getEmployeeDetailList_HuaMingCe__DingDing(List IDList, ref List lsmain, ref string msg, int size = 50) { try { int startIndex = 0; int endIndex = startIndex + size; if (endIndex > IDList.Count) { endIndex = IDList.Count; } while (startIndex < endIndex && endIndex <= IDList.Count) { //List IDList_temp = new List(); //for (int i = startIndex; i < endIndex; i++) //{ // IDList_temp.Add(IDList[i]); //} //拼接职员ID string IDList_temp = ""; for (int i = startIndex; i < endIndex; i++) { IDList_temp += IDList[i] + ","; } //去除拼接字符串的最后一个逗号 if (IDList_temp.Length > 0) { IDList_temp = IDList_temp.Substring(0, IDList_temp.Length - 1); } OapiSmartworkHrmEmployeeV2ListResponse response = new OapiSmartworkHrmEmployeeV2ListResponse(); if (getEmployeeDetailListByEmployeeIDList_DingDing(IDList_temp, ref response, ref msg) == false) { return false; } string[] studyLevelList = new string[] {"","高中","中专","大专","本科","","","其他","初中","小学" }; for (int i = 0; i < response.Result.Count; i++) { List fieldNameList = new List(); for (int j = 0; j < response.Result[i].FieldDataList.Count; j++) { fieldNameList.Add(response.Result[i].FieldDataList[j].FieldName); } try { DD_HuaMingCe oItem = new DD_HuaMingCe(); oItem.HEmployeeID = response.Result[i].Userid; if (fieldNameList.IndexOf("姓名") >= 0) { int index = fieldNameList.IndexOf("姓名"); oItem.HEmployeeName = response.Result[i].FieldDataList[index].FieldValueList[0].Value; } if (fieldNameList.IndexOf("年龄(系统计算)") >= 0) { int index = fieldNameList.IndexOf("年龄(系统计算)"); oItem.HAge = response.Result[i].FieldDataList[index].FieldValueList[0].Value; } if (fieldNameList.IndexOf("学历") >= 0) { int index = fieldNameList.IndexOf("学历"); oItem.HStudyLevel = response.Result[i].FieldDataList[index].FieldValueList[0].Value; if (oItem.HStudyLevel != null && oItem.HStudyLevel != "") { long studyLevelIndex = DBUtility.ClsPub.isLong(oItem.HStudyLevel); if (studyLevelIndex >= studyLevelList.Length) { studyLevelIndex = 0; } oItem.HStudyLevel = studyLevelList[studyLevelIndex]; } } if (fieldNameList.IndexOf("部门") >= 0) { int index = fieldNameList.IndexOf("部门"); oItem.HDept = response.Result[i].FieldDataList[index].FieldValueList[0].Value; } if (fieldNameList.IndexOf("司龄(系统计算)") >= 0) { int index = fieldNameList.IndexOf("司龄(系统计算)"); oItem.HWorkAge = response.Result[i].FieldDataList[index].FieldValueList[0].Value; } lsmain.Add(oItem); } catch (Exception e) { continue; } } startIndex = endIndex; endIndex += size; if (endIndex > IDList.Count) { endIndex = IDList.Count; } } return true; } catch (Exception e) { msg = e.Message; return false; } } #endregion #region 数据同步 public bool getData_HuaMingCe(ref string msg) { long offset = 0; long size = 50; //获取花名册职员ID列表 List IDList = new List(); if (getEmployeeIDList_DingDing(offset, size, ref IDList, ref msg) == false) { return false; } //获取详细信息并附加到列表lsmain中 List lsmain = new List(); if (getEmployeeDetailList_HuaMingCe__DingDing(IDList, ref lsmain, ref msg) == false) { return false; } try { oCN.BeginTran(); foreach (DD_HuaMingCe oItem in lsmain) { string sql_searchRepeat = "select * from DD_HuaMingCe where HEmployeeID = '" + oItem.HEmployeeID + "'"; DataSet ds_searchRepeat = oCN.RunProcReturn(sql_searchRepeat, "DD_HuaMingCe"); if (ds_searchRepeat != null && ds_searchRepeat.Tables[0].Rows.Count > 0) { string sql_deleteRepeat = "delete from DD_HuaMingCe where HEmployeeID = '" + oItem.HEmployeeID + "'"; oCN.RunProc(sql_deleteRepeat); } string sql_main = "insert into DD_HuaMingCe" + "(HEmployeeID,HEmployeeName,HAge,HStudyLevel,HDept,HWorkAge) " + "values(" + "'" + (oItem.HEmployeeID == null ? "" : oItem.HEmployeeID) + "'" + ",'" + (oItem.HEmployeeName == null ? "" : oItem.HEmployeeName) + "'" + ",'" + (oItem.HAge == null ? "0" : oItem.HAge) + "'" + ",'" + (oItem.HStudyLevel == null ? "" : oItem.HStudyLevel) + "'" + ",'" + (oItem.HDept == null ? "" : oItem.HDept) + "'" + ",'" + (oItem.HWorkAge == null ? "" : oItem.HWorkAge) + "'" + ")"; oCN.RunProc(sql_main); } oCN.Commit(); return true; } catch (Exception e) { msg = e.Message; oCN.RollBack(); return false; } } #endregion #endregion #endregion #region 钉钉数据同步 [Route("DD_DataSynchronization/DataSynchronization_DingDing_YiDa")] [HttpGet] public object DataSynchronization_DingDing_YiDa(string sWhere, string user) { string msg = ""; try { getAccessToken(); //if (getData_FenCengShenHeQianDaoBiao(ref msg) == false) //{ // objJsonResult.code = "0"; // objJsonResult.count = 0; // objJsonResult.Message = "Exception!" + msg; // objJsonResult.data = null; // return objJsonResult; //} //if (getData_XianChangBianHuaDianPingShenDan(ref msg) == false) //{ // objJsonResult.code = "0"; // objJsonResult.count = 0; // objJsonResult.Message = "Exception!" + msg; // objJsonResult.data = null; // return objJsonResult; //} //if (getData_FenCengShenHeGuanLi(ref msg) == false) //{ // objJsonResult.code = "0"; // objJsonResult.count = 0; // objJsonResult.Message = "Exception!" + msg; // objJsonResult.data = null; // return objJsonResult; //} //if (getData_QRQCWenTiTiJiaoBiao(ref msg) == false) //{ // objJsonResult.code = "0"; // objJsonResult.count = 0; // objJsonResult.Message = "Exception!" + msg; // objJsonResult.data = null; // return objJsonResult; //} //if (getData_HuaMingCe(ref msg) == false) //{ // objJsonResult.code = "0"; // objJsonResult.count = 0; // objJsonResult.Message = "Exception!" + msg; // objJsonResult.data = null; // return objJsonResult; //} objJsonResult.code = "1"; objJsonResult.count = 1; objJsonResult.Message = "Sucess!"; objJsonResult.data = null; return objJsonResult; } catch (Exception e) { objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = "Exception!" + e.ToString(); objJsonResult.data = null; return objJsonResult; } } #endregion } }