Beispiel #1
0
        /// <summary>
        /// 安防小区人脸抓拍信息订阅
        /// </summary>
        private void XiaoQuData()
        {
            HttpUtillib.SetPlatformInfo("27628571", "TJzjgMqgM41EezwD36aV", "10.172.33.2", 443, true);
            // 组装POST请求body
            //string body = "{\"eventTypes\":[131614],\"eventDest\":\"" + url + "\",\"subType\":1,\"eventLvl\":[2]}";
            string body = "{\"eventTypes\":[131614,1157632001,1157632002,1157632003,1157632004,1157632005],\"eventDest\":\"http://112.17.130.233:4474/api/v1/FireFighting/XiaoQuAnFang/GetAction\",\"subType\":0,\"eventLvl\":[2]}";
            // 填充Url
            string uri = "/artemis/api/eventService/v1/eventSubscriptionByEventTypes";

            // 发起POST请求,超时时间15秒,返回响应字节数组
            byte[] result = HttpUtillib.HttpPost(uri, body, 15);
            if (result != null)
            {
                string tmp = System.Text.Encoding.UTF8.GetString(result);
                Result ady = JsonConvert.DeserializeObject <Result>(tmp);
                if (ady.code == 0)
                {
                    MessageBox.Show("订阅成功!");
                }
            }
            else
            {
                MessageBox.Show("/api/eventService/v1/eventSubscriptionByEventTypes: POST fail");
            }
        }
Beispiel #2
0
        /// <summary>
        /// 执行所有任务
        /// </summary>
        void ExecuteAllTask()
        {
            DataHandlerDAO      dataHandlerDAO = DataHandlerDAO.GetInstance();
            SqlServerDapperDber qgcDapperDber  = new SqlServerDapperDber(commonDAO.GetCommonAppletConfigString("全过程接口连接字符串"));

            taskSimpleScheduler.StartNewTask("同步全过程基础信息", () =>
            {
                dataHandlerDAO.SyncBaseInfoForCHLGL(this.rTxtOutputer.Output, qgcDapperDber);
                //dataHandlerDAO.SyncBaseInfoForDYJH(this.rTxtOutputer.Output, qgcDapperDber);
                dataHandlerDAO.SyncBaseInfoForGYS(this.rTxtOutputer.Output, qgcDapperDber);
                //dataHandlerDAO.SyncBaseInfoForCHYSH(this.rTxtOutputer.Output, qgcDapperDber);
                dataHandlerDAO.SyncBaseInfoForKB(this.rTxtOutputer.Output, qgcDapperDber);
                dataHandlerDAO.SyncBaseInfoForMZ(this.rTxtOutputer.Output, qgcDapperDber);
                dataHandlerDAO.SyncBaseInfoForDYJHK(this.rTxtOutputer.Output, qgcDapperDber);
                dataHandlerDAO.SyncBaseInfoForYAPFK(this.rTxtOutputer.Output, qgcDapperDber);
                dataHandlerDAO.SyncBaseInfoForQCLMYGP(this.rTxtOutputer.Output, qgcDapperDber);
                dataHandlerDAO.SyncBaseInfoForWZJHCL(this.rTxtOutputer.Output, qgcDapperDber);
                dataHandlerDAO.SyncBaseInfoForJLMZ(this.rTxtOutputer.Output, qgcDapperDber);
                dataHandlerDAO.SyncBaseInfoForJLPZ(this.rTxtOutputer.Output, qgcDapperDber);
                dataHandlerDAO.SyncBaseInfoForcCLGLLSPZ(this.rTxtOutputer.Output, qgcDapperDber);
            }, 10000, OutputError);

            taskSimpleScheduler.StartNewTask("处理集控首页数据", () =>
            {
                dataHandlerDAO.HandleHomePageData(this.rTxtOutputer.Output);
            }, 10000, OutputError);

            //初始化Api
            string ip     = commonDAO.GetCommonAppletConfigString("海康平台地址");
            int    port   = commonDAO.GetCommonAppletConfigInt32("海康协议端口号");
            string Appkey = commonDAO.GetCommonAppletConfigString("海康Appkey");
            string Secret = commonDAO.GetCommonAppletConfigString("海康Secret");

            HttpUtillib.SetPlatformInfo(Appkey, Secret, ip, port, false);

            taskSimpleScheduler.StartNewTask("同步门禁数据", () =>
            {
                dataHandlerDAO.SyncDoorEventData(this.rTxtOutputer.Output);
            }, 60000, OutputError);
        }
        public void SyncDoorEventData(Action <string, eOutputType> output)
        {
            int res = 0;

            try
            {
                List <Dictionary <string, object> > acsEventList = new List <Dictionary <string, object> >();
                List <string> cameraNameList = new List <string>();

                DoorEventRequest doorEventRequest = new DoorEventRequest()
                {
                    startTime = DateTime.Now.AddDays(-10),
                    endTime   = DateTime.Now,
                    pageNo    = 1,
                    pageSize  = 1000
                };

                string uri  = "/artemis/api/acs/v1/door/events";
                string body = JsonHelper.SerializeObject(doorEventRequest);

                byte[] resultByte = HttpUtillib.HttpPost(uri, body, 20);
                string resultStr  = Encoding.UTF8.GetString(resultByte);

                Result result = JsonHelper.DeserializeJsonToObject <Result>(resultStr);

                if (result.Code.Equals("0"))
                {
                    ResultData resultData = JsonHelper.DeserializeJsonToObject <ResultData>(result.Data.ToString());

                    acsEventList = JsonHelper.DeserializeJsonToObject <List <Dictionary <string, object> > >(resultData.List.ToString());

                    foreach (Dictionary <string, object> doorEvents in acsEventList)
                    {
                        int    eventType  = Convert.ToInt32(doorEvents["eventType"]);
                        string personName = doorEvents["personName"].ToString();

                        //只处理成功的事件
                        if (dicEventType.ContainsKey(eventType) && !string.IsNullOrWhiteSpace(personName))
                        {
                            string   eventId       = doorEvents["eventId"].ToString();
                            DateTime eventTime     = DateTime.Parse(doorEvents["eventTime"].ToString());
                            string   personId      = doorEvents["personId"].ToString();
                            string   doorIndexCode = doorEvents["doorIndexCode"].ToString();
                            string   doorName      = doorEvents["doorName"].ToString();

                            CmcsGuardInfo entity = Dbers.GetInstance().SelfDber.Entity <CmcsGuardInfo>("where NId=:NId", new { NId = eventId });
                            if (entity == null)
                            {
                                entity = new CmcsGuardInfo()
                                {
                                    DataFrom       = "智能化",
                                    F_ConsumerId   = personId,
                                    F_ConsumerName = personName,
                                    F_InOut        = "1",
                                    F_ReaderId     = doorIndexCode,
                                    F_ReaderName   = doorName,
                                    NId            = eventId,
                                    F_ReadDate     = eventTime,
                                    Remark         = dicEventType[eventType]
                                };

                                res += Dbers.GetInstance().SelfDber.Insert(entity);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                output("同步门禁数据异常" + ex.Message, eOutputType.Error);
                return;
            }

            output(string.Format("同步门禁数据{0}条", res), eOutputType.Normal);
        }
        public object GetAllIdCardsFormHik()
        {
            string logPath = HttpContext.Current.Server.MapPath("~/logs/menjin/");

            try
            {
                //设置推送的参数(由海康提供)
                HttpUtillib.SetPlatformInfo(Config.GetValue("appKey"), Config.GetValue("appSecret"), Config.GetValue("appIP"), int.Parse(Config.GetValue("appPort")), bool.Parse(Config.GetValue("isHttps")));
                //根据身份证号获取海康人员信息
                byte[]  bytes = HttpUtillib.HttpPost("/artemis/api/resource/v2/person/personList", Newtonsoft.Json.JsonConvert.SerializeObject(new { pageSize = 1000, pageNo = 1 }), 300);
                string  data  = System.Text.Encoding.UTF8.GetString(bytes);//获取调用结果
                dynamic dy    = JsonConvert.DeserializeObject <ExpandoObject>(data);
                //如果调用成功
                List <string> lstIdCards = new List <string>();
                if (dy.code == "0")
                {
                    StringBuilder sbSql = new StringBuilder("begin\r\n");
                    deptBll.ExecuteSql("delete from tmp_idcards");
                    List <object> lstUsers = dy.data.list;
                    long          total    = dy.data.total;
                    if (total <= 1000)
                    {
                        foreach (object obj in lstUsers)
                        {
                            dy = obj;
                            long certType = dy.certificateType;
                            if (certType == 111)
                            {
                                sbSql.AppendFormat("insert into tmp_idcards(idcard) values('{0}');\r\n", dy.certificateNo);
                                lstIdCards.Add(dy.certificateNo);
                            }
                        }
                    }
                    else
                    {
                        int page = 2;
                        //分页设置,因接口最多支持1000个查询条件
                        int totalCount = int.Parse(total.ToString());
                        if (totalCount % 1000 == 0)
                        {
                            page = totalCount / 1000;
                        }
                        else
                        {
                            page = totalCount / 1000 + 1;
                        }
                        for (int i = 2; i <= page; i++)
                        {
                            bytes = HttpUtillib.HttpPost("/artemis/api/resource/v2/person/personList", Newtonsoft.Json.JsonConvert.SerializeObject(new { pageSize = 1000, pageNo = i }), 300);
                            data  = System.Text.Encoding.UTF8.GetString(bytes);//获取调用结果
                            dy    = JsonConvert.DeserializeObject <ExpandoObject>(data);
                            if (dy.code == "0")
                            {
                                lstUsers = dy.data.list;
                                foreach (object obj in lstUsers)
                                {
                                    dy = obj;
                                    long certType = dy.certificateType;
                                    if (certType == 111)
                                    {
                                        sbSql.AppendFormat("insert into tmp_idcards(idcard) values('{0}');\r\n", dy.certificateNo);
                                        lstIdCards.Add(dy.certificateNo);
                                    }
                                }
                            }
                        }
                    }
                    sbSql.Append("commit;\r\n end;");
                    if (lstIdCards.Count > 0)
                    {
                        deptBll.ExecuteSql(sbSql.ToString());
                    }
                    System.IO.File.AppendAllText(logPath + $"{DateTime.Now.ToString("yyyyMMdd")}.txt", $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}:查询到的用户身份证件号:{lstIdCards.ToJson()}。SQL:{sbSql.ToString()}\n\n");
                }
                return(new { code = 0, message = "操作成功", data = string.Join(",", lstIdCards) });
            }
            catch (Exception ex)
            {
                System.IO.File.AppendAllText(logPath + $"{DateTime.Now.ToString("yyyyMMdd")}.txt", $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}:查询身份证号出现异常:{ex.Message}。\n\n");
                return(new { code = 1, message = ex.Message });
            }
        }
        public object SyncUsers(int pfrom, string orgId = "")
        {
            string logPath = HttpContext.Current.Server.MapPath("~/logs/menjin/");

            try
            {
                string                    accounts = HttpContext.Current.Request["accounts"]; //需要推送的用户账号
                List <object>             lstUsers = new List <object>();                     //用户存储要推送的用户集合
                StringBuilder             sbSql    = new StringBuilder();                     //Sql语句
                byte[]                    bytes;
                Dictionary <long, string> dict = new Dictionary <long, string>();             //临时存储培训平台推送的用户信息
                if (pfrom == 0)                                                               //培训平台
                {
                    string    sql     = string.Format("select userid, u.realname,u.gender,u.identifyid,u.email,u.mobile,u.birthday,u.encode,account from base_user u where u.account in ('{0}') or newaccount in ('{0}')", accounts.Replace(",", "','"));
                    DataTable dtUsers = deptBll.GetDataTable(sql);
                    int       j       = 0;
                    System.IO.File.AppendAllText(logPath + $"{DateTime.Now.ToString("yyyyMMdd")}.txt", $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}:查询到的用户信息:{dtUsers.ToJson()}。\n\n");
                    foreach (DataRow dr in dtUsers.Rows)
                    {
                        string account  = dr["account"].ToString();    //用户id
                        string userId   = dr["userid"].ToString();     //用户id
                        string userName = dr["realname"].ToString();   //姓名
                        string sex      = dr["gender"].ToString();     //性别
                        string idCard   = dr["identifyid"].ToString(); //身份证号
                        string email    = dr["email"].ToString();      //邮箱
                        string mobile   = dr["mobile"].ToString();     //手机号
                        string birthday = dr["birthday"].ToString();   //生日
                        string encode   = dr["encode"].ToString();     //工号

                        //转换生日格式
                        if (!string.IsNullOrWhiteSpace(birthday))
                        {
                            DateTime time;
                            bool     flag = DateTime.TryParse(birthday, out time);
                            if (flag)
                            {
                                birthday = time.ToString("yyyy-MM-dd");
                            }
                            else
                            {
                                birthday = "";
                            }
                        }
                        //转换性别
                        int gender   = 0;
                        int certType = 111;//表示身份证类型
                        if (sex.Length > 0)
                        {
                            gender = sex == "男" ? 1 : 2;
                        }
                        //构造需要推送的用户参数
                        lstUsers.Add(new
                        {
                            clientId        = j,
                            personId        = userId,
                            personName      = userName,
                            gender          = gender,
                            certificateType = certType,
                            certificateNo   = idCard,
                            orgIndexCode    = "a10d1bf0-c9d5-4b0b-82c3-abd624a79f76",
                            jobNo           = encode,
                            email           = email,
                            phoneNo         = mobile,
                            birthday        = birthday
                        });
                        j++;
                        dict.Add(j, account);
                    }
                }
                if (pfrom == 1)//工具箱
                {
                    //查询需要推送的用户
                    DataTable dtUsers = deptBll.GetDataTable(string.Format("select id,username,idcard from PX_TRAINRECORD t where account in('{0}')", accounts.Replace(",", "','")));
                    int       j       = 0;
                    System.IO.File.AppendAllText(logPath + $"{DateTime.Now.ToString("yyyyMMdd")}.txt", $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}:查询到的用户信息:{dtUsers.ToJson()}。\n\n");
                    foreach (DataRow dr in dtUsers.Rows)
                    {
                        int    gender   = 0;                              //性别,0:未知,1:男,2:女
                        string id       = dr["id"].ToString();            //主键ID
                        string userName = dr["username"].ToString().Trim();
                        string idCard   = dr["idcard"].ToString().Trim(); //证件号
                        int    len      = idCard.Length;
                        int    certType = 414;                            //护照类型
                        if (len == 15 || len == 18)
                        {
                            certType = 111; //身份证类型
                            string ch = idCard.Substring(len - 2, 1);
                            int    i;
                            bool   result = int.TryParse(ch, out i);
                            if (result)
                            {
                                if (i % 2 == 0)
                                {
                                    gender = 2;
                                }
                                else
                                {
                                    gender = 1;
                                }
                            }
                        }
                        //构造需要推送的用户参数
                        lstUsers.Add(new {
                            clientId        = j,
                            personId        = id,
                            personName      = userName,
                            gender          = gender,
                            certificateType = certType,
                            certificateNo   = idCard,
                            orgIndexCode    = "a10d1bf0-c9d5-4b0b-82c3-abd624a79f76"
                        });
                        j++;
                    }
                }
                string usersData = Newtonsoft.Json.JsonConvert.SerializeObject(lstUsers);
                System.IO.File.AppendAllText(logPath + $"{DateTime.Now.ToString("yyyyMMdd")}.txt", $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}:Api地址:/artemis/api/resource/v1/person/batch/add,推送的数据:{usersData}。\n\n");
                //设置推送的参数(由海康提供)
                HttpUtillib.SetPlatformInfo(Config.GetValue("appKey"), Config.GetValue("appSecret"), Config.GetValue("appIP"), int.Parse(Config.GetValue("appPort")), bool.Parse(Config.GetValue("isHttps")));
                //开始推送数据
                bytes = HttpUtillib.HttpPost("/artemis/api/resource/v1/person/batch/add", usersData, 300);
                string data = System.Text.Encoding.UTF8.GetString(bytes);//获取调用结果
                System.IO.File.AppendAllText(logPath + $"{DateTime.Now.ToString("yyyyMMdd")}.txt", $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}:海康门禁服务返回的结果:{data}。\n\n");
                dynamic dy = JsonConvert.DeserializeObject <ExpandoObject>(data);
                //如果调用成功
                if (dy.code == "0")
                {
                    //获取海康门禁推送成功的记录
                    List <object> lstSuccess = dy.data.successes;
                    int           count      = lstSuccess.Count;
                    if (count > 0)
                    {
                        System.IO.File.AppendAllText(logPath + $"{DateTime.Now.ToString("yyyyMMdd")}.txt", $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}:调用海康门禁推送人员接口成功,成功记录数{count}\n\n");

                        List <string> lstUserIds = new List <string>();
                        foreach (object obj in lstSuccess)
                        {
                            dynamic dy1 = obj;
                            if (pfrom == 1)
                            {
                                string personId = dy1.personId;
                                if (!lstUserIds.Contains(personId))
                                {
                                    lstUserIds.Add(personId);
                                }
                            }
                            if (pfrom == 0)
                            {
                                long clientId = dy1.clientId;
                                if (!dict.ContainsKey(clientId))
                                {
                                    lstUserIds.Add(dict[clientId]);
                                }
                            }
                        }
                        //把推送成功的记录插入推送历史记录表
                        if (lstUserIds.Count > 0)
                        {
                            //根据推送结果查询成功的用户信息
                            sbSql.AppendFormat("insert into px_pushrecord(id,username,account,idcard,unitname,deptname,postname,worktype,score,datatype,deviceno,projectid,time) select id,username,account,idcard,unitname,deptname,postname,worktype,score,{1},deviceno,projectid,'{2}' from PX_TRAINRECORD where id in('{0}')", string.Join(",", lstUserIds).Replace(",", "','"), pfrom, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                        }
                        if (pfrom == 0)
                        {
                            if (lstUserIds.Count > 0)
                            {
                                System.IO.File.AppendAllText(logPath + $"{DateTime.Now.ToString("yyyyMMdd")}.txt", $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}:开始准备获取培训平台人员培训记录\n\n");
                                DepartmentEntity dept = deptBll.GetEntity(orgId);
                                WebClient        wc   = new WebClient();
                                wc.Credentials = CredentialCache.DefaultCredentials;
                                Dictionary <string, string> dictData = new Dictionary <string, string>();
                                dictData.Add("companyId", dept.InnerPhone);
                                dictData.Add("pageIndex", "1");
                                dictData.Add("pageSize", "1000");
                                dictData.Add("userAccounts", string.Join(",", lstUserIds).Replace(",", "','"));
                                dictData.Add("type", "1");
                                wc.Headers.Add("Content-Type", "application/json;charset=UTF-8");
                                wc.Encoding = Encoding.UTF8;
                                string apiUrl  = new ERCHTMS.Busines.SystemManage.DataItemDetailBLL().GetItemValue("TrainApiAddress", "Train");
                                string dicData = Newtonsoft.Json.JsonConvert.SerializeObject(dictData);
                                System.IO.File.AppendAllText(logPath + $"{DateTime.Now.ToString("yyyyMMdd")}.txt", $"Api地址:{apiUrl}/api/api/trainRecord/queryTrainList,给培训平台推送的数据:{dicData}。\n\n");
                                string result = wc.UploadString(apiUrl + "/api/api/trainRecord/queryTrainList", "POST", dicData);

                                System.IO.File.AppendAllText(logPath + $"{DateTime.Now.ToString("yyyyMMdd")}.txt", $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}:培训平台返回的结果:{result}。\n\n");
                                dynamic dyData = JsonConvert.DeserializeObject <ExpandoObject>(result);
                                if (dyData.meta.success)
                                {
                                    sbSql.Append("begin  \r\n");
                                    List <object> lstTrainUsers = dyData.data.trainList;
                                    foreach (object obj in lstTrainUsers)
                                    {
                                        dyData = obj;
                                        string id        = Guid.NewGuid().ToString();
                                        string userName  = dyData.userName;
                                        string sex       = dyData.sex == "1" ? "男" : "女";
                                        string account   = dyData.userAccount;
                                        string idCard    = dyData.idNumber;
                                        string unitName  = dyData.companyName;
                                        string deptName  = dyData.deptName;
                                        string postName  = dyData.category;
                                        string workType  = dyData.station;
                                        string score     = dyData.examScore;
                                        string projectId = dyData.projectId;
                                        sbSql.AppendFormat("insert into PX_PUSHRECORD(id,username,account,sex,idcard,unitname,deptname,postname,worktype,score,projectid,time) values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}'); \r\n", Guid.NewGuid().ToString(), userName, account, sex, idCard, unitName, deptName, postName, workType, score, projectId, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                                    }
                                    sbSql.Append("commit;\r\n end;");

                                    System.IO.File.AppendAllText(logPath + $"{DateTime.Now.ToString("yyyyMMdd")}.txt", $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}:执行的SQL语句:{sbSql.ToString()}。\n\n");
                                }
                            }
                        }
                        //插入记录到推送记录表
                        if (sbSql.Length > 0)
                        {
                            deptBll.ExecuteSql(sbSql.ToString());
                        }
                    }
                    if (dy.data.failures.Count > 0)
                    {
                        System.IO.File.AppendAllText(logPath + $"{DateTime.Now.ToString("yyyyMMdd")}.txt", $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}:海康门禁推送人员接口有失败的记录。\n\n");

                        return(new { code = 1, message = "推送失败的数据:" + Newtonsoft.Json.JsonConvert.SerializeObject(dy.data.failures), data = dy.data });
                    }
                    else
                    {
                        return(new { code = 0, message = dy.msg, data = dy.data });
                    }
                }
                else
                {
                    return(new { code = 1, message = dy.msg, data = data });
                }
            }
            catch (Exception ex)
            {
                System.IO.File.AppendAllText(logPath + $"{DateTime.Now.ToString("yyyyMMdd")}.txt", $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}:异常信息:{ex.Message}。\n\n");
                return(new { code = 1, message = ex.Message });
            }
        }
        public object DeleteUsers()
        {
            string logPath = HttpContext.Current.Server.MapPath("~/logs/menjin/");

            try
            {
                string    userIds = HttpContext.Current.Request["userIds"];//需要推送的用户账号
                string    sql     = string.Format("select personid from HIK_USERRELATION where userid in('{0}')", userIds.Replace(",", "','"));
                DataTable dtUsers = deptBll.GetDataTable(sql);
                System.IO.File.AppendAllText(logPath + $"{DateTime.Now.ToString("yyyyMMdd")}.txt", $"删除的用户信息:{dtUsers.ToJson()}。\n\n");
                if (dtUsers.Rows.Count > 0)
                {
                    string[] personIds = dtUsers.AsEnumerable().Select(t => t.Field <string>("personid")).ToArray();
                    //设置推送的参数(由海康提供)
                    HttpUtillib.SetPlatformInfo(Config.GetValue("appKey"), Config.GetValue("appSecret"), Config.GetValue("appIP"), int.Parse(Config.GetValue("appPort")), bool.Parse(Config.GetValue("isHttps")));


                    System.IO.File.AppendAllText(logPath + $"{DateTime.Now.ToString("yyyyMMdd")}.txt", $"推送的数据:{personIds.ToJson()}。\n\n");

                    //开始推送数据
                    byte[] bytes = HttpUtillib.HttpPost("/artemis/api/resource/v1/person/batch/delete", Newtonsoft.Json.JsonConvert.SerializeObject(new { personIds = personIds }), 300);
                    string data  = System.Text.Encoding.UTF8.GetString(bytes);//获取调用结果

                    System.IO.File.AppendAllText(logPath + $"{DateTime.Now.ToString("yyyyMMdd")}.txt", $"门禁返回的结果:{data}。\n\n");

                    dynamic       dy       = JsonConvert.DeserializeObject <ExpandoObject>(data);
                    StringBuilder sbMessge = new StringBuilder();
                    //如果调用成功
                    if (dy.code == "0")
                    {
                        //同步删除人员进入通道权限配置
                        List <object> lstData = new List <object>();
                        lstData.Add(new {
                            indexCodes     = personIds,
                            personDataType = "person"
                        });
                        bytes = HttpUtillib.HttpPost("/artemis/api/acps/v1/auth_config/delete", Newtonsoft.Json.JsonConvert.SerializeObject(new { personDatas = lstData }), 300);
                        data  = System.Text.Encoding.UTF8.GetString(bytes);//获取调用结果
                        dy    = JsonConvert.DeserializeObject <ExpandoObject>(data);
                        if (dy.code == "0")
                        {
                            sbMessge.AppendFormat("批量删除人员门禁通道权限成功,返回信息:{0}。", dy.msg);
                            System.IO.File.AppendAllText(logPath + $"{DateTime.Now.ToString("yyyyMMdd")}.txt", $"调用结果:{ sbMessge.ToString()}。\n\n");
                            return(new { code = 0, message = sbMessge.ToString() });
                        }
                        else
                        {
                            sbMessge.AppendFormat("批量删除人员门禁通道权限失败,返回信息:{0}。", data);
                            System.IO.File.AppendAllText(logPath + $"{DateTime.Now.ToString("yyyyMMdd")}.txt", $"调用结果:{ sbMessge.ToString()}。\n\n");
                            return(new { code = 1, message = sbMessge.ToString() });
                        }
                    }
                    else
                    {
                        sbMessge.AppendFormat("批量删除人员失败,返回信息:{0}。", data);
                        return(new { code = 1, message = sbMessge.ToString() });
                    }
                }
                else
                {
                    return(new { code = 1, message = "没有找到符合条件的记录" });
                }
            }
            catch (Exception ex)
            {
                System.IO.File.AppendAllText(logPath + $"{DateTime.Now.ToString("yyyyMMdd")}.txt", $"异常信息:{ ex.Message}。\n\n");
                return(new { code = 1, message = ex.Message });
            }
        }
        public object ConfigUsers()
        {
            string logPath = HttpContext.Current.Server.MapPath("~/logs/menjin/");

            try
            {
                //获取所有人员的身份证号
                DataTable dtUsers = deptBll.GetDataTable(string.Format("select identifyid from base_user"));
                string[]  idcards = new string[] { };
                int       page    = 0;
                //分页设置,因接口最多支持1000个查询条件
                int totalCount = dtUsers.Rows.Count;
                if (totalCount % 1000 == 0)
                {
                    page = totalCount / 1000;
                }
                else
                {
                    page = totalCount / 1000 + 1;
                }
                System.IO.File.AppendAllText(logPath + "\\configusers.log", page.ToString() + "\r\n");
                int count = 0;
                for (int j = 0; j < page; j++)
                {
                    //根据分页获取身份证号
                    idcards = dtUsers.AsEnumerable().Select(t => t.Field <string>("identifyid")).Skip(j * 1000).Take(1000).ToArray();
                    //设置推送的参数(由海康提供)
                    HttpUtillib.SetPlatformInfo(Config.GetValue("appKey"), Config.GetValue("appSecret"), Config.GetValue("appIP"), int.Parse(Config.GetValue("appPort")), bool.Parse(Config.GetValue("isHttps")));
                    System.IO.File.AppendAllText(@"d:\logs\configusers.log", idcards + "\r\n\n");
                    //根据身份证号获取海康人员信息
                    byte[]        bytes = HttpUtillib.HttpPost("/artemis/api/resource/v1/person/condition/personInfo", Newtonsoft.Json.JsonConvert.SerializeObject(new { paramName = "certificateNo", paramValue = idcards }), 300);
                    string        data  = System.Text.Encoding.UTF8.GetString(bytes);//获取调用结果
                    dynamic       dy    = JsonConvert.DeserializeObject <ExpandoObject>(data);
                    StringBuilder sbSql = new StringBuilder();
                    //如果调用成功
                    if (dy.code == "0")
                    {
                        sbSql.Append("begin \r\n");
                        List <object> lstUsers = dy.data.list;
                        System.IO.File.AppendAllText(logPath + "\\configusers.log", lstUsers.Count + "\r\n\n");
                        foreach (object obj in lstUsers)
                        {
                            dy = obj;
                            long certType = dy.certificateType;
                            if (certType == 111)
                            {
                                string    idCard     = dy.certificateNo;
                                string    personId   = dy.personId;
                                string    deptId     = dy.orgIndexCode;
                                string    personName = dy.personName;
                                DataTable dtUser     = deptBll.GetDataTable(string.Format("select userid,account from base_user where identifyid='{0}'", idCard));

                                if (dtUser.Rows.Count > 0)
                                {
                                    DataRow drUser = dtUser.Rows[0];
                                    sbSql.AppendFormat("delete from HIK_USERRELATION where personId='{0}';\r\n", personId);
                                    sbSql.AppendFormat("insert into HIK_USERRELATION(userid,account,idcard,personid,orgindexcode) values('{0}','{1}','{2}','{3}','{4}');\r\n", drUser[0].ToString(), drUser[1].ToString(), idCard, personId, deptId);
                                    count++;
                                }
                            }
                        }
                        System.IO.File.AppendAllText(logPath + "\\configusers.log", "3\r\n\n");
                        sbSql.Append("commit;\r\n end;");
                        deptBll.ExecuteSql(sbSql.ToString());
                        System.IO.File.AppendAllText(logPath + "\\configusers.log", sbSql.ToString() + "\r\n\n");
                    }
                }
                string message = string.Format("成功匹配{0}条数据", count);
                return(new { code = 0, message = "操作成功", data = message });
            }
            catch (Exception ex)
            {
                System.IO.File.AppendAllText(logPath + "\\configusers.log", ex.Message + "\r\n\n");
                return(new { code = 1, message = ex.Message });
            }
        }