Example #1
0
        /// <summary>
        /// 得到一个对象实体
        /// </summary>
        public Maticsoft.Model.SMT_STAFF_FACEDEV GetModel(decimal STAFF_ID, decimal FACEDEV_ID)
        {
            StringBuilder strSql = new StringBuilder();

            strSql.Append("select  top 1 STAFF_ID,FACEDEV_ID,IS_UPLOAD,UPLOAD_TIME,ADD_TIME,START_VALID_TIME,END_VALID_TIME,STAFF_DEV_ID from SMT_STAFF_FACEDEV ");
            strSql.Append(" where STAFF_ID=@STAFF_ID and FACEDEV_ID=@FACEDEV_ID ");
            SqlParameter[] parameters =
            {
                new SqlParameter("@STAFF_ID",   SqlDbType.Decimal, 9),
                new SqlParameter("@FACEDEV_ID", SqlDbType.Decimal, 9)
            };
            parameters[0].Value = STAFF_ID;
            parameters[1].Value = FACEDEV_ID;

            Maticsoft.Model.SMT_STAFF_FACEDEV model = new Maticsoft.Model.SMT_STAFF_FACEDEV();
            DataSet ds = DbHelperSQL.Query(strSql.ToString(), parameters);

            if (ds.Tables[0].Rows.Count > 0)
            {
                return(DataRowToModel(ds.Tables[0].Rows[0]));
            }
            else
            {
                return(null);
            }
        }
Example #2
0
 /// <summary>
 /// 得到一个对象实体
 /// </summary>
 public Maticsoft.Model.SMT_STAFF_FACEDEV DataRowToModel(DataRow row)
 {
     Maticsoft.Model.SMT_STAFF_FACEDEV model = new Maticsoft.Model.SMT_STAFF_FACEDEV();
     if (row != null)
     {
         if (row["STAFF_ID"] != null && row["STAFF_ID"].ToString() != "")
         {
             model.STAFF_ID = decimal.Parse(row["STAFF_ID"].ToString());
         }
         if (row["FACEDEV_ID"] != null && row["FACEDEV_ID"].ToString() != "")
         {
             model.FACEDEV_ID = decimal.Parse(row["FACEDEV_ID"].ToString());
         }
         if (row["IS_UPLOAD"] != null && row["IS_UPLOAD"].ToString() != "")
         {
             if ((row["IS_UPLOAD"].ToString() == "1") || (row["IS_UPLOAD"].ToString().ToLower() == "true"))
             {
                 model.IS_UPLOAD = true;
             }
             else
             {
                 model.IS_UPLOAD = false;
             }
         }
         if (row["UPLOAD_TIME"] != null && row["UPLOAD_TIME"].ToString() != "")
         {
             model.UPLOAD_TIME = DateTime.Parse(row["UPLOAD_TIME"].ToString());
         }
         if (row["ADD_TIME"] != null && row["ADD_TIME"].ToString() != "")
         {
             model.ADD_TIME = DateTime.Parse(row["ADD_TIME"].ToString());
         }
         if (row["START_VALID_TIME"] != null && row["START_VALID_TIME"].ToString() != "")
         {
             model.START_VALID_TIME = DateTime.Parse(row["START_VALID_TIME"].ToString());
         }
         if (row["END_VALID_TIME"] != null && row["END_VALID_TIME"].ToString() != "")
         {
             model.END_VALID_TIME = DateTime.Parse(row["END_VALID_TIME"].ToString());
         }
         if (row["STAFF_DEV_ID"] != null)
         {
             model.STAFF_DEV_ID = row["STAFF_DEV_ID"].ToString();
         }
     }
     return(model);
 }
Example #3
0
        private void dgvStaffs_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex >= 0 && e.ColumnIndex >= 0)
            {
                DataGridViewRow row = dgvStaffs.Rows[e.RowIndex];
                Maticsoft.Model.SMT_STAFF_FACEDEV        ffd  = (Maticsoft.Model.SMT_STAFF_FACEDEV)row.Tag;
                List <Maticsoft.Model.SMT_STAFF_FACEDEV> list = new List <Maticsoft.Model.SMT_STAFF_FACEDEV>()
                {
                    ffd
                };
                if (dgvStaffs.Columns[e.ColumnIndex].Name == "Col_DELETE")
                {
                    doDelete(list, false, row);
                }
                else if (dgvStaffs.Columns[e.ColumnIndex].Name == "Col_Modify")
                {
                    try
                    {
                        FrmStaffInfo staffInfo = new FrmStaffInfo(ffd);
                        staffInfo.ShowDialog(this);
                        row.Cells[1].Value = staffInfo.StaffInfo.STAFF_NO;
                        row.Cells[2].Value = staffInfo.StaffInfo.REAL_NAME;
                        row.Cells[3].Value = staffInfo.StaffInfo.ORG_NAME;

                        string state = "";
                        if (staffInfo.StaffInfo.PHOTO == null || staffInfo.StaffInfo.PHOTO.Length == 0)
                        {
                            state = "未上传(无照片)";
                        }
                        else
                        {
                            state = "未上传";
                        }
                        row.Cells[4].Value = state;
                    }
                    catch (Exception ex)
                    {
                        WinInfoHelper.ShowInfoWindow(this, "修改发生异常:" + ex.Message);
                    }
                }
                else if (dgvStaffs.Columns[e.ColumnIndex].Name == "Col_SC")
                {
                    DoUpload(list, true, false, row);
                }
            }
        }
Example #4
0
        private List <Maticsoft.Model.SMT_STAFF_FACEDEV> GetSelectStaffs(out List <DataGridViewRow> rows)
        {
            rows = null;
            if (this.dgvStaffs.SelectedRows.Count == 0)
            {
                return(null);
            }
            List <Maticsoft.Model.SMT_STAFF_FACEDEV> list = new List <Maticsoft.Model.SMT_STAFF_FACEDEV>();

            rows = new List <DataGridViewRow>();
            foreach (DataGridViewRow row in this.dgvStaffs.SelectedRows)
            {
                Maticsoft.Model.SMT_STAFF_FACEDEV sfdModel = (Maticsoft.Model.SMT_STAFF_FACEDEV)row.Tag;
                list.Add(sfdModel);
                rows.Add(row);
            }
            return(list);
        }
Example #5
0
        /// <summary>
        /// 更新一条数据
        /// </summary>
        public bool Update(Maticsoft.Model.SMT_STAFF_FACEDEV model)
        {
            StringBuilder strSql = new StringBuilder();

            strSql.Append("update SMT_STAFF_FACEDEV set ");
            strSql.Append("IS_UPLOAD=@IS_UPLOAD,");
            strSql.Append("UPLOAD_TIME=@UPLOAD_TIME,");
            strSql.Append("ADD_TIME=@ADD_TIME,");
            strSql.Append("START_VALID_TIME=@START_VALID_TIME,");
            strSql.Append("END_VALID_TIME=@END_VALID_TIME,");
            strSql.Append("STAFF_DEV_ID=@STAFF_DEV_ID");
            strSql.Append(" where STAFF_ID=@STAFF_ID and FACEDEV_ID=@FACEDEV_ID ");
            SqlParameter[] parameters =
            {
                new SqlParameter("@IS_UPLOAD",        SqlDbType.Bit,        1),
                new SqlParameter("@UPLOAD_TIME",      SqlDbType.DateTime),
                new SqlParameter("@ADD_TIME",         SqlDbType.DateTime),
                new SqlParameter("@START_VALID_TIME", SqlDbType.DateTime),
                new SqlParameter("@END_VALID_TIME",   SqlDbType.DateTime),
                new SqlParameter("@STAFF_DEV_ID",     SqlDbType.VarChar,   50),
                new SqlParameter("@STAFF_ID",         SqlDbType.Decimal,    9),
                new SqlParameter("@FACEDEV_ID",       SqlDbType.Decimal, 9)
            };
            parameters[0].Value = model.IS_UPLOAD;
            parameters[1].Value = model.UPLOAD_TIME;
            parameters[2].Value = model.ADD_TIME;
            parameters[3].Value = model.START_VALID_TIME;
            parameters[4].Value = model.END_VALID_TIME;
            parameters[5].Value = model.STAFF_DEV_ID;
            parameters[6].Value = model.STAFF_ID;
            parameters[7].Value = model.FACEDEV_ID;

            int rows = DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);

            if (rows > 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Example #6
0
        /// <summary>
        /// 增加一条数据
        /// </summary>
        public bool Add(Maticsoft.Model.SMT_STAFF_FACEDEV model)
        {
            StringBuilder strSql = new StringBuilder();

            strSql.Append("insert into SMT_STAFF_FACEDEV(");
            strSql.Append("STAFF_ID,FACEDEV_ID,IS_UPLOAD,UPLOAD_TIME,ADD_TIME,START_VALID_TIME,END_VALID_TIME,STAFF_DEV_ID)");
            strSql.Append(" values (");
            strSql.Append("@STAFF_ID,@FACEDEV_ID,@IS_UPLOAD,@UPLOAD_TIME,@ADD_TIME,@START_VALID_TIME,@END_VALID_TIME,@STAFF_DEV_ID)");
            SqlParameter[] parameters =
            {
                new SqlParameter("@STAFF_ID",         SqlDbType.Decimal,   9),
                new SqlParameter("@FACEDEV_ID",       SqlDbType.Decimal,   9),
                new SqlParameter("@IS_UPLOAD",        SqlDbType.Bit,       1),
                new SqlParameter("@UPLOAD_TIME",      SqlDbType.DateTime),
                new SqlParameter("@ADD_TIME",         SqlDbType.DateTime),
                new SqlParameter("@START_VALID_TIME", SqlDbType.DateTime),
                new SqlParameter("@END_VALID_TIME",   SqlDbType.DateTime),
                new SqlParameter("@STAFF_DEV_ID",     SqlDbType.VarChar, 50)
            };
            parameters[0].Value = model.STAFF_ID;
            parameters[1].Value = model.FACEDEV_ID;
            parameters[2].Value = model.IS_UPLOAD;
            parameters[3].Value = model.UPLOAD_TIME;
            parameters[4].Value = model.ADD_TIME;
            parameters[5].Value = model.START_VALID_TIME;
            parameters[6].Value = model.END_VALID_TIME;
            parameters[7].Value = model.STAFF_DEV_ID;

            int rows = DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);

            if (rows > 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Example #7
0
        private void DoUpload(List <Maticsoft.Model.SMT_STAFF_FACEDEV> list, bool bforce, bool bcancel, params DataGridViewRow[] rows)
        {
            List <Maticsoft.Model.SMT_STAFF_FACEDEV> addmodels    = new List <Maticsoft.Model.SMT_STAFF_FACEDEV>();
            List <Maticsoft.Model.SMT_STAFF_FACEDEV> updatemodels = new List <Maticsoft.Model.SMT_STAFF_FACEDEV>();
            List <Maticsoft.Model.SMT_STAFF_FACEDEV> deletemodels = new List <Maticsoft.Model.SMT_STAFF_FACEDEV>();

            foreach (var item in list)
            {
                if (bcancel && item.IS_UPLOAD)
                {
                    deletemodels.Add(item);
                }
                else
                {
                    if (item.IS_UPLOAD)
                    {
                        updatemodels.Add(item);
                    }
                    else
                    {
                        addmodels.Add(item);
                    }
                }
            }
            CtrlWaiting waiting = new CtrlWaiting(() =>
            {
                string errMsg = "";
                bool ret      = false;
                List <Maticsoft.Model.SMT_STAFF_FACEDEV> dels = null;
                if (bcancel && deletemodels.Count > 0)
                {
                    dels = UploadPrivate.DeleteFace(deletemodels, out errMsg);
                    if (!string.IsNullOrWhiteSpace(errMsg))
                    {
                        WinInfoHelper.ShowInfoWindow(this, "权限删除存在异常:" + errMsg);
                    }
                }
                else
                {
                    SmartAccess.Common.Datas.UploadPrivate.CancelObject cancelObject = new UploadPrivate.CancelObject();
                    if (bforce)
                    {
                        ret = UploadPrivate.UploadFace(cancelObject, list, null, out errMsg);
                    }
                    else
                    {
                        ret = UploadPrivate.UploadFace(cancelObject, addmodels, updatemodels, out errMsg);
                    }
                    if (!ret || !string.IsNullOrWhiteSpace(errMsg))
                    {
                        WinInfoHelper.ShowInfoWindow(this, "权限上传存在异常:" + errMsg);
                    }
                }

                if (rows != null && rows.Length > 0)
                {
                    this.Invoke(new Action(() =>
                    {
                        foreach (var row in rows)
                        {
                            Maticsoft.Model.SMT_STAFF_FACEDEV item = (Maticsoft.Model.SMT_STAFF_FACEDEV)row.Tag;
                            string state = "";
                            if (item.IS_FORBIDDEN)
                            {
                                state = "已禁用";
                            }
                            else if (item.IS_UPLOAD)
                            {
                                state = "已上传";
                            }
                            else
                            {
                                if (item.PHOTO == null || item.PHOTO.Length == 0)
                                {
                                    state = "未上传(无照片)";
                                }
                                else
                                {
                                    state = "未上传";
                                }
                            }
                            row.Cells[4].Value = state;
                            row.Cells[8].Value = item.IS_UPLOAD ? "重上传" : "上传";
                        }
                    }));
                }
                else
                {
                    DoSearch(null, null, null);
                }
            });

            waiting.Show(this);
        }
Example #8
0
        private void DoSave(bool isupload = false)
        {
            if (dgvSelected.Rows.Count == 0)
            {
                if (_inprivateStaffInfos.Count == 0)
                {
                    WinInfoHelper.ShowInfoWindow(this, "请至少选一个授权的人员!");
                    return;
                }
            }
            var hasPrivates = _inprivateStaffInfos.ToList();
            List <Maticsoft.Model.SMT_STAFF_INFO> staffInfos = new List <Maticsoft.Model.SMT_STAFF_INFO>();

            foreach (DataGridViewRow item in dgvSelected.Rows)
            {
                staffInfos.Add((Maticsoft.Model.SMT_STAFF_INFO)item.Tag);
            }
            CtrlWaiting waiting = new CtrlWaiting(() =>
            {
                Maticsoft.BLL.SMT_STAFF_FACEDEV sfbll = new Maticsoft.BLL.SMT_STAFF_FACEDEV();
                List <Maticsoft.Model.SMT_STAFF_FACEDEV> addmodels    = new List <Maticsoft.Model.SMT_STAFF_FACEDEV>();
                List <Maticsoft.Model.SMT_STAFF_FACEDEV> updatemodels = new List <Maticsoft.Model.SMT_STAFF_FACEDEV>();
                List <Maticsoft.Model.SMT_STAFF_FACEDEV> deletemodels = new List <Maticsoft.Model.SMT_STAFF_FACEDEV>();
                try
                {
                    foreach (var staff in staffInfos)
                    {
                        foreach (var dev in _selectDevices)
                        {
                            var model = sfbll.GetModel(staff.ID, dev.ID);
                            if (model == null)
                            {
                                model                  = new Maticsoft.Model.SMT_STAFF_FACEDEV();
                                model.ADD_TIME         = DateTime.Now;
                                model.END_VALID_TIME   = dtpEnd.Value.Date + new TimeSpan(23, 59, 59);
                                model.FACEDEV_ID       = dev.ID;
                                model.IS_UPLOAD        = false;
                                model.STAFF_DEV_ID     = Guid.NewGuid().ToString("N");
                                model.STAFF_ID         = staff.ID;
                                model.START_VALID_TIME = dtpStart.Value.Date;
                                model.UPLOAD_TIME      = DateTime.Now;
                                sfbll.Add(model);
                            }
                            else
                            {
                                hasPrivates.RemoveAll(m => m.ID == model.STAFF_ID);

                                model.START_VALID_TIME = dtpStart.Value.Date;
                                model.END_VALID_TIME   = dtpEnd.Value.Date + new TimeSpan(23, 59, 59);
                                if (string.IsNullOrWhiteSpace(model.STAFF_DEV_ID))
                                {
                                    model.STAFF_DEV_ID = Guid.NewGuid().ToString("N");
                                }
                                sfbll.Update(model);
                            }
                            model.STAFF_INFO      = staff;
                            model.FACERECG_DEVICE = dev;
                            if (!model.IS_UPLOAD)
                            {
                                addmodels.Add(model);
                            }
                        }
                    }
                    foreach (var item in hasPrivates)
                    {
                        foreach (var dev in _selectDevices)
                        {
                            var model = sfbll.GetModel(item.ID, dev.ID);
                            if (model != null)
                            {
                                deletemodels.Add(model);
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    WinInfoHelper.ShowInfoWindow(this, "保存异常:" + ex.Message);
                    log.Error("保存异常:", ex);
                    return;
                }
                if (deletemodels.Count > 0)
                {
                    string errMsg = "";
                    var delre     = UploadPrivate.DeleteFace(deletemodels, out errMsg);
                    if (delre != null && delre.Count > 0)
                    {
                        foreach (var item in delre)
                        {
                            sfbll.Delete(item.STAFF_ID, item.FACEDEV_ID);
                        }
                    }
                }
                if (isupload)
                {
                    string errMsg = "";
                    SmartAccess.Common.Datas.UploadPrivate.CancelObject cancelObject = new UploadPrivate.CancelObject();
                    bool ret = UploadPrivate.UploadFace(cancelObject, addmodels, updatemodels, out errMsg);
                    if (!ret || !string.IsNullOrWhiteSpace(errMsg))
                    {
                        WinInfoHelper.ShowInfoWindow(this, "保存成功,部分权限上传异常:" + errMsg);
                    }
                }
                this.Invoke(new Action(() =>
                {
                    this.DialogResult = DialogResult.OK;
                    this.Close();
                }));
            });

            waiting.Show(this);
        }
 /// <summary>
 /// 得到一个对象实体
 /// </summary>
 public Maticsoft.Model.SMT_STAFF_FACEDEV DataRowToModelEx(DataRow row)
 {
     Maticsoft.Model.SMT_STAFF_FACEDEV model = new Maticsoft.Model.SMT_STAFF_FACEDEV();
     if (row != null)
     {
         if (row["STAFF_ID"] != null && row["STAFF_ID"].ToString() != "")
         {
             model.STAFF_ID = decimal.Parse(row["STAFF_ID"].ToString());
         }
         if (row["FACEDEV_ID"] != null && row["FACEDEV_ID"].ToString() != "")
         {
             model.FACEDEV_ID = decimal.Parse(row["FACEDEV_ID"].ToString());
         }
         if (row["IS_UPLOAD"] != null && row["IS_UPLOAD"].ToString() != "")
         {
             if ((row["IS_UPLOAD"].ToString() == "1") || (row["IS_UPLOAD"].ToString().ToLower() == "true"))
             {
                 model.IS_UPLOAD = true;
             }
             else
             {
                 model.IS_UPLOAD = false;
             }
         }
         if (row["UPLOAD_TIME"] != null && row["UPLOAD_TIME"].ToString() != "")
         {
             model.UPLOAD_TIME = DateTime.Parse(row["UPLOAD_TIME"].ToString());
         }
         if (row["ADD_TIME"] != null && row["ADD_TIME"].ToString() != "")
         {
             model.ADD_TIME = DateTime.Parse(row["ADD_TIME"].ToString());
         }
         if (row["START_VALID_TIME"] != null && row["START_VALID_TIME"].ToString() != "")
         {
             model.START_VALID_TIME = DateTime.Parse(row["START_VALID_TIME"].ToString());
         }
         if (row["STAFF_VALID_ENDTIME"] != null && row["STAFF_VALID_ENDTIME"].ToString() != "")//"STAFF_VALID_ENDTIME"
         {
             model.END_VALID_TIME = DateTime.Parse(row["STAFF_VALID_ENDTIME"].ToString());
         }
         if (row["STAFF_DEV_ID"] != null)
         {
             model.STAFF_DEV_ID = row["STAFF_DEV_ID"].ToString();
         }
         if (row["REAL_NAME"] != null)
         {
             model.REAL_NAME = row["REAL_NAME"].ToString();
         }
         if (row["STAFF_NO"] != null)
         {
             model.STAFF_NO = row["STAFF_NO"].ToString();
         }
         if (row["STAFF_TYPE"] != null)
         {
             model.STAFF_TYPE = row["STAFF_TYPE"].ToString();
         }
         if (row["ORG_ID"] != null && row["ORG_ID"].ToString() != "")
         {
             model.ORG_ID = decimal.Parse(row["ORG_ID"].ToString());
         }
         if (row["ORG_NAME"] != null)
         {
             model.ORG_NAME = row["ORG_NAME"].ToString();
         }
         if (row["PHOTO"] != null && row["PHOTO"].ToString() != "")
         {
             model.PHOTO = (byte[])row["PHOTO"];
         }
         if (row["IS_FORBIDDEN"] != null && row["IS_FORBIDDEN"].ToString() != "")
         {
             if ((row["IS_FORBIDDEN"].ToString() == "1") || (row["IS_FORBIDDEN"].ToString().ToLower() == "true"))
             {
                 model.IS_FORBIDDEN = true;
             }
             else
             {
                 model.IS_FORBIDDEN = false;
             }
         }
         if (row["FACEDEV_NAME"] != null)
         {
             model.FACEDEV_NAME = row["FACEDEV_NAME"].ToString();
         }
     }
     return(model);
 }
Example #10
0
        //保存记录
        public void SaveRecord(decimal ctrlrId, List <Maticsoft.Model.BST.staff_log> records)
        {
            try
            {
                Dictionary <string, Maticsoft.Model.SMT_STAFF_FACEDEV> staffDevDic = new Dictionary <string, Maticsoft.Model.SMT_STAFF_FACEDEV>();
                Maticsoft.BLL.SMT_FACE_RECORD bllRecord = new Maticsoft.BLL.SMT_FACE_RECORD();
                foreach (var record in records)
                {
                    string strTime    = record.id.Substring(0, "2018/09/23_22:48:39".Length);
                    string staffdevId = record.id.Substring("2018/09/23_22:48:39".Length + 1);
                    Maticsoft.Model.SMT_STAFF_FACEDEV sfmodel = null;
                    if (staffDevDic.ContainsKey(staffdevId))
                    {
                        sfmodel = staffDevDic[staffdevId];
                    }
                    else
                    {
                        Maticsoft.BLL.SMT_STAFF_FACEDEV          ssfbll    = new Maticsoft.BLL.SMT_STAFF_FACEDEV();
                        List <Maticsoft.Model.SMT_STAFF_FACEDEV> modelSFDs = ssfbll.GetModelList("STAFF_DEV_ID='" + staffdevId + "'");
                        if (modelSFDs.Count == 0)
                        {
                            log.Warn("无此ID:" + staffdevId + " 授权注册!");
                            continue;
                        }
                        sfmodel = modelSFDs[0];
                        Maticsoft.BLL.SMT_STAFF_INFO sbll = new Maticsoft.BLL.SMT_STAFF_INFO();
                        sfmodel.STAFF_INFO = sbll.GetModel(sfmodel.STAFF_ID);
                        staffDevDic.Add(staffdevId, sfmodel);
                    }
                    Maticsoft.Model.SMT_FACE_RECORD modelRecord = new Maticsoft.Model.SMT_FACE_RECORD();
                    modelRecord.FACEDEV_ID      = ctrlrId;
                    modelRecord.FREC_AUTHORITY  = record.authority;
                    modelRecord.FREC_FACE_IMAGE = record.imagesql;
                    double dec = 0.8;
                    double.TryParse(record.info, out dec);
                    modelRecord.FREC_FACE_LEVEL  = (decimal)dec;
                    modelRecord.FREC_VIDEO_IMAGE = record.imagevideo;
                    DateTime now = DateTime.Now;
                    DateTime.TryParse(strTime.Replace("_", " "), out now);
                    modelRecord.FREC_TIME     = now;
                    modelRecord.ID            = -1;
                    modelRecord.FREC_PARAM3   = record.data_keepon3;
                    modelRecord.FREC_PARAM4   = record.data_keepon4;
                    modelRecord.FREC_SRC_ID   = record.id;
                    modelRecord.FREC_STAFF_ID = sfmodel.STAFF_ID;
                    if (sfmodel.STAFF_INFO == null)
                    {
                        modelRecord.FREC_STAFF_NAME = record.name;
                        modelRecord.FREC_STAFF_NO   = record.data_keepon1;
                        modelRecord.FREC_STAFF_TYPE = record.data_keepon4;
                    }
                    else
                    {
                        modelRecord.FREC_STAFF_NAME = sfmodel.STAFF_INFO.REAL_NAME;
                        modelRecord.FREC_STAFF_NO   = sfmodel.STAFF_INFO.STAFF_NO;
                        modelRecord.FREC_STAFF_TYPE = sfmodel.STAFF_INFO.STAFF_TYPE;
                    }

                    bllRecord.Add(modelRecord);
                }
            }
            catch (Exception ex)
            {
                log.Error("记录保存失败:CTRLID=" + ctrlrId, ex);
                throw ex;
            }
        }
        private void DoSaveDevices(List <Maticsoft.Model.SMT_FACERECG_DEVICE> devices, bool upload = false)
        {
            if (dtpStart.Value.Date > dtpEnd.Value.Date)
            {
                WinInfoHelper.ShowInfoWindow(this, "起始时间不能小于结束时间!");
                return;
            }

            CtrlWaiting ctrlWaiting = new CtrlWaiting("正在保存...", () =>
            {
                try
                {
                    Maticsoft.BLL.SMT_STAFF_FACEDEV sfBLL = new Maticsoft.BLL.SMT_STAFF_FACEDEV();
                    var sfList = sfBLL.GetModelList("STAFF_ID=" + _staffInfo.ID);
                    List <Maticsoft.Model.SMT_FACERECG_DEVICE> tempDevs = new List <Maticsoft.Model.SMT_FACERECG_DEVICE>();
                    tempDevs.AddRange(devices);
                    List <Maticsoft.Model.SMT_STAFF_FACEDEV> addPrivates    = new List <Maticsoft.Model.SMT_STAFF_FACEDEV>();
                    List <Maticsoft.Model.SMT_STAFF_FACEDEV> updatePrivates = new List <Maticsoft.Model.SMT_STAFF_FACEDEV>();
                    List <Maticsoft.Model.SMT_STAFF_FACEDEV> delPrivates    = new List <Maticsoft.Model.SMT_STAFF_FACEDEV>();
                    foreach (var item in sfList)
                    {
                        var sc = devices.Find(m => m.ID == item.FACEDEV_ID);
                        if (sc == null)//不存在,则权限删除
                        {
                            delPrivates.Add(item);
                            // sfBLL.Delete(item.STAFF_ID, item.FACEDEV_ID);//删除权限
                        }
                        else
                        {
                            item.START_VALID_TIME = dtpStart.Value.Date;
                            item.END_VALID_TIME   = dtpEnd.Value.Date + new TimeSpan(23, 59, 59);
                            if (_staffInfo.VALID_STARTTIME.Date > item.START_VALID_TIME.Date)
                            {
                                item.START_VALID_TIME = _staffInfo.VALID_STARTTIME.Date;
                            }
                            if (_staffInfo.VALID_ENDTIME.Date < item.END_VALID_TIME.Date)
                            {
                                item.END_VALID_TIME = _staffInfo.VALID_ENDTIME.Date + new TimeSpan(23, 59, 59);
                            }
                            sfBLL.Update(item);
                            tempDevs.Remove(sc);
                            if (!item.IS_UPLOAD)
                            {
                                addPrivates.Add(item);
                            }
                            else
                            {
                                if (_imageChanged)
                                {
                                    addPrivates.Add(item);
                                }
                                else
                                {
                                    updatePrivates.Add(item);
                                }
                            }
                        }
                    }
                    foreach (var item in tempDevs)//添加的权限
                    {
                        Maticsoft.Model.SMT_STAFF_FACEDEV newSd = new Maticsoft.Model.SMT_STAFF_FACEDEV();
                        newSd.ADD_TIME         = DateTime.Now;
                        newSd.FACEDEV_ID       = item.ID;
                        newSd.IS_UPLOAD        = false;
                        newSd.UPLOAD_TIME      = DateTime.Now;
                        newSd.STAFF_ID         = _staffInfo.ID;
                        newSd.STAFF_DEV_ID     = Guid.NewGuid().ToString("N");
                        newSd.START_VALID_TIME = dtpStart.Value.Date;
                        newSd.END_VALID_TIME   = dtpEnd.Value.Date + new TimeSpan(23, 59, 59);
                        if (_staffInfo.VALID_STARTTIME.Date > newSd.START_VALID_TIME.Date)
                        {
                            newSd.START_VALID_TIME = _staffInfo.VALID_STARTTIME.Date;
                        }
                        if (_staffInfo.VALID_ENDTIME.Date < newSd.END_VALID_TIME.Date)
                        {
                            newSd.END_VALID_TIME = _staffInfo.VALID_ENDTIME.Date + new TimeSpan(23, 59, 59);
                        }
                        sfBLL.Add(newSd);
                        addPrivates.Add(newSd);
                    }
                    if (upload)
                    {
                        string errMsg;
                        if (delPrivates.Count > 0)
                        {
                            var delResults = UploadPrivate.DeleteFace(delPrivates, out errMsg);
                            if (delResults != null && delResults.Count > 0)
                            {
                                foreach (var item in delResults)
                                {
                                    Maticsoft.BLL.SMT_STAFF_FACEDEV bll = new Maticsoft.BLL.SMT_STAFF_FACEDEV();
                                    bll.Delete(item.STAFF_ID, item.FACEDEV_ID);
                                }
                            }
                        }
                        errMsg = "";
                        if (addPrivates.Count > 0 || updatePrivates.Count > 0)
                        {
                            SmartAccess.Common.Datas.UploadPrivate.CancelObject cancelObject = new UploadPrivate.CancelObject();
                            bool ret = UploadPrivate.UploadFace(cancelObject, addPrivates, updatePrivates, out errMsg);
                            if (ret && errMsg != "")
                            {
                                WinInfoHelper.ShowInfoWindow(this, "上传权限存在异常:" + errMsg);
                                log.Warn("上传权限存在异常:" + errMsg);
                                return;
                            }
                        }
                        WinInfoHelper.ShowInfoWindow(null, "上传权限结束!");
                    }
                    this.Invoke(new Action(() =>
                    {
                        this.DialogResult = DialogResult.OK;
                        this.Close();
                    }));
                }
                catch (System.Exception ex)
                {
                    log.Error("保存异常:", ex);
                    WinInfoHelper.ShowInfoWindow(this, "保存异常:" + ex.Message);
                }
            });

            ctrlWaiting.Show(this);
        }