Newer
Older
IRIS_COLLECT_GA / IOM_cs / insertForm / CtrlDetail.cs
yangqianqian on 1 Jun 2021 22 KB first commit
using System;
using System.Drawing;
using System.Windows.Forms;
using System.IO;
using IOM_cs.irisDb.model;
using IOM_cs.irisDb.service;
using IOM_cs.irisDb;

namespace IOM_cs.insertForm
{
    public partial class CtrlDetail : UserControl
    {

        IUserIrisService iUserIrisService = (IUserIrisService)DbService.getEntity("IUserIrisService");
        public CtrlDetail()
        {          

            InitializeComponent();


            ////pic_det_photo.Location = new Point(690, 68);
            //pic_det_photo.Parent = this;
            //pic_det_photo.BringToFront();
            ////panel_eyeImage.Location = new Point(204, 830);
            //panel_eyeImage.Parent = this;
            //panel_eyeImage.BringToFront();

            resetDetail();
            setDetailValue(FormMain.person, FormMain.personExt, FormMain.irisDataColl, FormMain.irisData);

            // 国籍
            var items = new System.Collections.ArrayList(Enum.GetValues(typeof(country))).ToArray();
            comboBox_edit_country.Items.Clear();
            comboBox_edit_country.Items.AddRange(items);

            // 民族
            items = new System.Collections.ArrayList(Enum.GetValues(typeof(nation))).ToArray();
            comboBox_edit_nation.Items.Clear();
            comboBox_edit_nation.Items.AddRange(items);

            // 采集原因
            items = new System.Collections.ArrayList(Enum.GetValues(typeof(collReason))).ToArray();
            comboBox_edit_collReason.Items.Clear();
            comboBox_edit_collReason.Items.AddRange(items);


            // 采集地点
            items = new System.Collections.ArrayList(Enum.GetValues(typeof(collPlace))).ToArray();
            comboBox_edit_collPlace.Items.Clear();
            comboBox_edit_collPlace.Items.AddRange(items);         
           
        }


        #region 详情、编辑、删除

        private void resetDetail()
        {
            // 基础信息
            label_det_name.Text = "";
            label_det_cardType.Text = "";
            label_det_country.Text = "";
            label_det_idCardNo.Text = "";
            label_det_nation.Text = "";
            label_det_cerValid.Text = "";
            label_det_sex.Text = "";
            label_det_cerAuth.Text = "";
            label_det_age.Text = "";
            label_det_addr1.Text = "";
            label_det_birthday.Text = "";
            label_det_addr2.Text = "";
            label_det_tel1.Text = "";
            label_det_tel2.Text = "";
            label_det_collWay.Text = "";
            label_det_isCer.Text = "";
            pic_det_photo.Image = null;          


            // 采集信息
            label_det_collTime.Text = "";
            label_det_collName.Text = "";
            label_det_collReason.Text = "";
            label_det_collPlace.Text = "";
            label_det_stName.Text = "";
            label_det_stType.Text = "";
            label_det_flgForce.Text = "";
            label_det_flgWo.Text = "";
            label_det_collWay.Text = "";


            // 临时关注
            label39.Visible = false;
            label35.Visible = false;
            label_det_focusRemarks.Visible = false;
            label_det_focusEndDate.Visible = false;
            label_det_flgFocus.Text = "";            
            label_det_devType.Text = "";
            label_det_devCode.Text = "";
            label_det_devFirm.Text = "";
            label_det_reasonCollDesc.Text = "";
            label_det_collNum.Text = "";


            // 生物特征
            // 左眼
            pic_det_imageL1.Image = null;
            label_det_qL.Text = "";
            // 右眼
            pic_det_imageR1.Image = null;
            label_det_qR.Text = "";
        }

        // 给详情页赋值
        private void setDetailValue(Person person, PersonExt personExt, IrisDataColl irisDataColl, IrisData irisData)
        {
            try
            {
                // 基础信息
                label_det_name.Text = person.name;
                label_det_cardType.Text = Enum.GetName(typeof(cardType), Convert.ToInt16(person.cardType));
                if (null != personExt.column1 && "" != personExt.column1) label_det_country.Text = Enum.GetName(typeof(country), Convert.ToInt16(personExt.column1));
                label_det_idCardNo.Text = person.idCardNo;
                label_det_nation.Text = Enum.GetName(typeof(nation), Convert.ToInt16(person.nation));
                label_det_cerValid.Text = personExt.column6;
                label_det_sex.Text = Enum.GetName(typeof(sex), Convert.ToInt16(person.sex));
                label_det_cerAuth.Text = personExt.column2;
                label_det_age.Text = countAge(person.birthday).ToString();
                label_det_addr1.Text = personExt.column3;
                if (null != person.birthday) label_det_birthday.Text = person.birthday.ToString("yyyy-MM-dd");
                label_det_addr2.Text = personExt.column4;
                label_det_tel1.Text = irisDataColl.tel1;
                label_det_tel2.Text = irisDataColl.tel2;
                if (irisDataColl.collWay != null && irisDataColl.collWay != "") label_det_collWay.Text = Enum.GetName(typeof(collWay), Convert.ToInt16(irisDataColl.collWay));
                if (irisDataColl.isCer == "0") label_det_isCer.Text = "无证";
                else if (irisDataColl.isCer == "1") label_det_isCer.Text = "有证";
                //证件照
                if (personExt.column7 != null && personExt.column7 != "")
                {
                    string base64 = personExt.column7.Replace("data:image/png;base64,", "").Replace("data:image/jgp;base64,", "").Replace("data:image/jpg;base64,", "").Replace("data:image/jpeg;base64,", "");//将base64头部信息替换
                    byte[] bytes = Convert.FromBase64String(base64);
                    MemoryStream ms = new MemoryStream(bytes);
                    Image mImage = Image.FromStream(ms);
                    pic_det_photo.Image = Image.FromStream(ms);
                    pic_photo_edit.Image = Image.FromStream(ms);
                }


                // 采集信息
                label_det_collTime.Text = irisDataColl.collTime.ToString("yyyy-MM-dd");
                label_det_collName.Text = irisDataColl.collName;
                label_det_collReason.Text = Enum.GetName(typeof(collReason), Convert.ToInt16(irisDataColl.collReason));
                label_det_collPlace.Text = Enum.GetName(typeof(collPlace), Convert.ToInt16(irisDataColl.collPlace));
                label_det_stName.Text = irisDataColl.stName;
                label_det_stType.Text = irisDataColl.stType;
                if (irisDataColl.flgForcePerson == "0") label_det_flgForce.Text = "否";
                else if (irisDataColl.flgForcePerson == "1") label_det_flgForce.Text = "是";
                if (irisDataColl.flgWo == "0") label_det_flgWo.Text = "否";
                else if (irisDataColl.flgWo == "1") label_det_flgWo.Text = "是";
                label_det_collWay.Text = Enum.GetName(typeof(collWay), Convert.ToInt16(irisDataColl.collWay));


                // 临时关注
                label39.Visible = false;
                label35.Visible = false;
                label_det_focusRemarks.Visible = false;
                label_det_focusEndDate.Visible = false;
                if (irisDataColl.flgFocus == "0")
                {
                    label_det_flgFocus.Text = "否";
                }
                else if (irisDataColl.flgFocus == "1")
                {
                    label_det_flgFocus.Text = "是";
                    label39.Visible = true;
                    label35.Visible = true;
                    label_det_focusRemarks.Visible = true;
                    label_det_focusEndDate.Visible = true;
                    if (null != irisDataColl.focusEndDate) label_det_focusEndDate.Text = irisDataColl.focusEndDate.ToString("yyyy-MM-dd");
                    label_det_focusRemarks.Text = irisDataColl.focusRemarks;
                }
                label_det_devType.Text = "望远镜形状虹膜采集识别设备";
                label_det_devCode.Text = irisDataColl.devCode;
                label_det_devFirm.Text = irisDataColl.devFirm;
                label_det_reasonCollDesc.Text = irisDataColl.reasonCollDesc;
                label_det_collNum.Text = irisDataColl.collNum;


                // 生物特征
                //左眼
                string base64L = irisData.imageL1Data;
                if (base64L != null && base64L != "") 
                { 
                    pic_det_imageL1.Image = Base64StringToImage(base64L);
                    pic_imageL_edit.Image = Base64StringToImage(base64L);
                }
                if (irisDataColl.qL != 0 && irisDataColl.qL.ToString() != "")
                {
                    label_det_qL.Text = "质量:" + irisDataColl.qL.ToString("0.0");
                    label_qL_edit.Text = "质量:" + irisDataColl.qL.ToString("0.0");
                }
                //右眼
                string base64R = irisData.imageR1Data;
                if (base64R != null && base64R != "")
                {
                    pic_det_imageR1.Image = Base64StringToImage(base64R);
                    pic_imageR_edit.Image = Base64StringToImage(base64R);
                }
                if (irisDataColl.qR != 0 && irisDataColl.qR.ToString() != "")
                {
                    label_det_qR.Text = "质量:" + irisDataColl.qR.ToString("0.0");
                    label_qR_edit.Text = "质量:" + irisDataColl.qR.ToString("0.0");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("获取详情失败!"+ex.Message);
            }
        }


        // 编辑 
        private void btn_edit_Click(object sender, EventArgs e)
        { 
            panel_edit.Visible = true;
            panel_detail_labels.Visible = false;            

            //基础信息
            txt_edit_name.Text = label_det_name.Text;
            comboBox_edit_cardType.Text = label_det_cardType.Text;
            if (label_det_sex.Text == "男") radio_edit_male.Checked = true;
            else radio_edit_female.Checked = true;
            txt_edit_idCardNo.Text = label_det_idCardNo.Text;
            if (label_det_country.Text != "") comboBox_edit_country.SelectedItem = Enum.Parse(typeof(country), label_det_country.Text);
            if (FormMain.personExt.column6 != "" && FormMain.personExt.column6 != null)
            {
                txt_edit_startDate.Text = FormMain.personExt.column6.Split(',')[0];
                txt_edit_endDate.Text = FormMain.personExt.column6.Split(',')[1];
            }
            comboBox_edit_nation.SelectedItem = Enum.Parse(typeof(nation), label_det_nation.Text);
            txt_edit_cerAuth.Text = label_det_cerAuth.Text;
            txt_edit_birthday.Text = label_det_birthday.Text;
            txt_edit_addr1.Text = label_det_addr1.Text;

            txt_cardType.Text = label_det_cardType.Text;
            txt_country.Text = label_det_country.Text;
            txt_nation.Text = label_det_nation.Text;
            


            //采集信息
            txt_edit_tel1.Text = label_det_tel1.Text;
            txt_edit_tel2.Text = label_det_tel2.Text;
            if (label_det_collPlace.Text != "") comboBox_edit_collPlace.SelectedItem = Enum.Parse(typeof(collPlace), label_det_collPlace.Text);
            if (label_det_collReason.Text != "") comboBox_edit_collReason.SelectedItem = Enum.Parse(typeof(collReason), label_det_collReason.Text);
            txt_edit_addr2.Text = label_det_addr2.Text;
            txt_edit_collRemarks.Text = label_det_reasonCollDesc.Text;
            if (label_det_flgForce.Text == "是") radio_edit_flgForcePersonY.Checked = true;
            else if (label_det_flgForce.Text == "否") radio_edit_flgForcePersonN.Checked = true;
            if (label_det_flgWo.Text == "是") radio_edit_flgWoY.Checked = true;
            else if (label_det_flgWo.Text == "否") radio_edit_flgWoN.Checked = true;
            if (label_det_flgFocus.Text == "是")
            {
                radio_edit_flgFocusY.Checked = true;
                txt_edit_focusEndDate.Text = label_det_focusEndDate.Text;
                txt_edit_focusRemarks.Text = label_det_focusRemarks.Text;
                panel_focusInfo.Visible = true;
            }
            else if (label_det_flgFocus.Text == "否")
            {
                radio_edit_flgFocusN.Checked = true;
                panel_focusInfo.Visible = false;
            } 
        }

        // 取消编辑
        private void btn_cancelEdit_Click(object sender, EventArgs e)
        {
            panel_edit.Visible = false;
            panel_detail_labels.Visible = true; 
        } 
        
        // 删除
        private void btn_delete_Click(object sender, EventArgs e)
        {
            DialogResult r = MessageBox.Show("确认删除此人员信息?", "提示", MessageBoxButtons.YesNo);
            if (r == DialogResult.Yes)
            {
                string imageL = FormMain.irisData.imageL1;
                string imageR = FormMain.irisData.imageR1;
                int re = iUserIrisService.DeletePerson(FormMain.person.id);

                if (re == 0)
                {
                    if (pic_det_imageL1.Image != null) pic_det_imageL1.Image.Dispose();
                    if (pic_det_imageR1.Image != null) pic_det_imageR1.Image.Dispose();

                    MessageBox.Show("删除成功!", "提示信息");

                    //跳转到采集列表
                    FormMain.insertService.setToFirst(FormMain.formMain.panel_Insert);
                    FormMain.insertService.SetPanelControl(FormMain.formMain.panel_Insert, "collect");

                }
                else
                {
                    MessageBox.Show("删除失败!", "错误");
                }
            }


        }
       
       

        // 保存编辑
        private void btn_saveEdit_Click_1(object sender, EventArgs e)
        {
            if (comboBox_edit_collReason.Text == "")
            {
                MessageBox.Show("采集原因不能为空!");
                return;
            }
            if (comboBox_edit_collPlace.Text == "")
            {
                MessageBox.Show("采集场地不能为空!");
                return;
            }
            if (txt_edit_tel1.Text != "")
            {
                if (!Validation.CheckMobliePhone(txt_edit_tel1.Text))
                {
                    MessageBox.Show("请输入正确的手机号1!");
                    return;
                }
            }
            if (txt_edit_tel2.Text != "")
            {
                if (!Validation.CheckMobliePhone(txt_edit_tel2.Text))
                {
                    MessageBox.Show("请输入正确的手机号2!");
                    return;
                }
            }

            // 收集数据
            // 基础信息
            FormMain.person.name = txt_edit_name.Text.Trim();
            if (radio_edit_male.Checked) FormMain.person.sex = ((int)sex.男).ToString(); else if (radio_edit_female.Checked) FormMain.person.sex = ((int)sex.女).ToString(); // 性别               
            FormMain.person.nation = comboBox_edit_nation.SelectedItem.GetHashCode().ToString(); // 民族
            FormMain.person.birthday = Convert.ToDateTime(txt_edit_birthday.Text);//生日

            FormMain.personExt.column1 = comboBox_edit_country.SelectedItem.GetHashCode().ToString(); // 国籍
            if (txt_edit_startDate.Text != "" && txt_edit_endDate.Text != "") FormMain.personExt.column6 = txt_edit_startDate.Text + "," + txt_edit_endDate.Text; // 证件有效期          
            FormMain.personExt.column2 = txt_edit_cerAuth.Text.Trim();//签发机关
            FormMain.personExt.column3 = txt_edit_addr1.Text.Trim();//户籍地址 
            FormMain.personExt.column4 = txt_edit_addr2.Text.Trim();//现住址

            // 采集信息
            FormMain.irisDataColl.tel1 = txt_edit_tel1.Text.Trim(); //手机号1
            FormMain.irisDataColl.tel2 = txt_edit_tel2.Text.Trim(); // 手机号2            
            FormMain.irisDataColl.collReason = comboBox_edit_collReason.SelectedItem.GetHashCode().ToString();//采集原因
            FormMain.irisDataColl.collPlace = comboBox_edit_collPlace.SelectedItem.GetHashCode().ToString();//采集地点
            if (radio_edit_flgForcePersonY.Checked) FormMain.irisDataColl.flgForcePerson = "1"; else if (radio_edit_flgForcePersonN.Checked) FormMain.irisDataColl.flgForcePerson = "0";
            if (radio_edit_flgFocusY.Checked) FormMain.irisDataColl.flgFocus = "1"; else if (radio_edit_flgFocusN.Checked) FormMain.irisDataColl.flgFocus = "0";
            if (radio_edit_flgWoY.Checked) FormMain.irisDataColl.flgWo = "1"; else if (radio_edit_flgWoN.Checked) FormMain.irisDataColl.flgWo = "0";
            if (txt_edit_focusEndDate.Text != "") FormMain.irisDataColl.focusEndDate = Convert.ToDateTime(txt_edit_focusEndDate.Text);
            FormMain.irisDataColl.focusRemarks = txt_edit_focusRemarks.Text.Trim();
            FormMain.irisDataColl.reasonCollDesc = txt_edit_collRemarks.Text.Trim();

            // 更新数据库
            int re = iUserIrisService.Update(FormMain.person, FormMain.personExt, FormMain.irisDataColl);
            if (re == 0)
            {
                MessageBox.Show("保存成功");

                // 跳转到详情页
                panel_detail_labels.Visible = true;
                panel_edit.Visible = false;
                setDetailValue(FormMain.person, FormMain.personExt, FormMain.irisDataColl, FormMain.irisData);
            } 
        }     
       
       
        // 选择是否“临时关注”
        private void radio_edit_flgFocusY_CheckedChanged(object sender, EventArgs e)
        {
            if (radio_edit_flgFocusY.Checked)
            {
                panel_focusInfo.Visible = true;
            }
            else if (radio_edit_flgFocusN.Checked)
            {
                panel_focusInfo.Visible = false;
            }
        }
        private void picker_edit_focusEndDate_ValueChanged_1(object sender, EventArgs e)
        {
            txt_edit_focusEndDate.Text = picker_edit_focusEndDate.Value.ToString("yyyy-MM-dd");
        }

        
        // 返回采集列表
        private void btn_back_Click_1(object sender, EventArgs e)
        {
            FormMain.insertService.setToFirst(FormMain.formMain.panel_Insert);
            FormMain.insertService.SetPanelControl(FormMain.formMain.panel_Insert, "collect");
            IOM_cs.insertForm.collection.CtrlCollectionFrom.ctrlCollectionFrom.dataGridView1.ClearSelection();
        }          
       
        
        //计算年龄
        private string countAge(DateTime birthday)
        {
            string ageS = "";
            if (null != birthday)
            {
                DateTime now = DateTime.Now;
                int age = now.Year - birthday.Year;
                //再考虑月、天的因素
                if (now.Month < birthday.Month || (now.Month == birthday.Month && now.Day < birthday.Day))
                {
                    age--;
                }
                ageS = age.ToString();
            }

            return ageS;
        }


        #endregion

        

     

        // 解决控件加载花屏问题
        //protected override CreateParams CreateParams
        //{
        //    get
        //    {
        //        var cp = base.CreateParams;
        //        //WS_EX_COMPOSITED
        //        cp.ExStyle |= 0x02000000;
        //        return cp;
        //    }
        //}


        /// <summary>
        /// base64编码的文本转为图片
        /// </summary>
        public Bitmap Base64StringToImage(string basestr)
        {
            Bitmap bitmap = null;
            try
            {
                String inputStr = basestr.Replace("data:image/png;base64,", "").Replace("data:image/jgp;base64,", "").Replace("data:image/jpg;base64,", "").Replace("data:image/bmp;base64,", "");//将base64头部信息替换
                        
                byte[] arr = Convert.FromBase64String(inputStr);
                MemoryStream ms = new MemoryStream(arr);
                Bitmap bmp = new Bitmap(ms);
                ms.Close();
                ms.Dispose();
                bitmap = bmp;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Base64StringToImage 转换失败\nException:" + ex.Message);
            }

            return bitmap;
        }

        private void CtrlDetail_Load(object sender, EventArgs e)
        {
            panel1.Click += (obj, arg) => { panel1.Select(); };
            InitializePanelScroll(panel1, panel1);
            //btn_back.Focus();
        }


        /// <summary>
        /// 递归初始化Panel内部各容器和控件
        /// </summary>
        /// <param name="container"></param>
        /// <param name="panelRoot"></param>
        private static void InitializePanelScroll(Control container, Control panelRoot)
        {
            foreach (Control control in container.Controls)
            {
                if (control is Panel)
                {
                    control.Click += (obj, arg) => { panelRoot.Select(); };
                    InitializePanelScroll(control, panelRoot);
                }
                //else if (control is Label)
                //{
                //    control.Click += (obj, arg) => { panelRoot.Select(); };
                //}
            }
        }

        private void btn_dropCollPlace_Click(object sender, EventArgs e)
        {
            comboBox_edit_collPlace.DroppedDown = true;
        }

        private void btn_dropCollReason_Click(object sender, EventArgs e)
        {
            comboBox_edit_collReason.DroppedDown = true;
        }

        private void comboBox_edit_collPlace_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (comboBox_edit_collPlace.SelectedIndex > -1) txt_collPlace.Text = comboBox_edit_collPlace.SelectedItem.ToString();
        }

        private void comboBox_edit_collReason_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (comboBox_edit_collReason.SelectedIndex > -1) txt_collReason.Text = comboBox_edit_collReason.SelectedItem.ToString();
        }

        private void btn_dropFocusEndDate_Click(object sender, EventArgs e)
        {
            picker_edit_focusEndDate.Focus();
            SendKeys.Send("{F4}"); //模拟按下F4,弹出日期面板
        }

        private void picker_edit_focusEndDate_ValueChanged(object sender, EventArgs e)
        {
            txt_edit_focusEndDate.Text = picker_edit_focusEndDate.Value.ToString("yyyy-MM-dd");
        }


       
        

    
        

       
       
        
     
    }
}