Newer
Older
IRIS_COLLECT / IOM_cs / CtrlDetail.cs
yangqianqian on 29 Dec 2020 17 KB first
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using IOM_cs.insertForm.service;
using IOM_cs.insertForm.service.impl;

namespace IOM_cs.insertForm
{
    public partial class CtrlDetail : UserControl
    {
        public CtrlDetail()
        {
            InitializeComponent();
            setDetailValue(FormMain.person, 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(collReason))).ToArray();            
            comboBox_edit_collReason.Items.Clear();
            comboBox_edit_collReason.Items.AddRange(items);
        }


        #region 详情、编辑、删除

        // 编辑       
        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.Text = FormMain.person.nation;
            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_edit_tel1.Text = label_det_tel1.Text;
            txt_edit_tel2.Text = label_det_tel2.Text;
            comboBox_edit_collPlace.Text = 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;
                label37.Visible = true;
                label43.Visible = true;
                txt_edit_focusEndDate.Visible = true;
                picker_edit_focusEndDate.Visible = true;
                txt_edit_focusRemarks.Visible = true;
            }
            else if (label_det_flgFocus.Text == "否")
            {
                radio_edit_flgFocusN.Checked = true;
                label37.Visible = false;
                label43.Visible = false;
                txt_edit_focusEndDate.Visible = false;
                picker_edit_focusEndDate.Visible = false;
                txt_edit_focusRemarks.Visible = false;
            }

        }

        // 删除
        private void btn_delete_Click_1(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 = UserIrisDB.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();
                    // 删除虹膜照片
                    if (imageL!="" && File.Exists(FormMain.eyeImagePath + imageL))
                    { File.Delete(FormMain.eyeImagePath + imageL); }

                    if (imageR!="" && File.Exists(FormMain.eyeImagePath + imageR))
                    { File.Delete(FormMain.eyeImagePath + imageR); }

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

                    //跳转到采集列表
                    FormMain.insertService.setToFirst(FormMain.formMain.panel_Insert);
                    FormMain.insertService.SetPanelControl(FormMain.formMain.panel_Insert, "collect");
                    
                }
                else
                {
                    MessageBox.Show("删除失败!", "错误");
                }
            }

        }

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

       

        // 保存编辑
        private void btn_saveEdit_Click(object sender, EventArgs e)
        {
            if (txt_edit_name.Text.Trim() == "")
            {
                MessageBox.Show(this, "姓名不能为空!", "Message", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }
            else
            {
                if (!Validation.CheckName(txt_edit_name.Text.Trim()))
                {
                    MessageBox.Show(this, "请输入真实姓名!", "Message", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return;
                }
            }
            if (txt_edit_birthday.Text == "")
            {
                MessageBox.Show(this, "生日不能为空!", "Message", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }
            else
            {
                // 与身份证号相互校验
                if (label_det_cardType.Text == "身份证" || label_det_cardType.Text == "临时居民身份证" || label_det_cardType.Text == "无证件")
                {
                    string birth = "";
                    if (label_det_idCardNo.Text.Length == 15) birth = "19" + label_det_idCardNo.Text.Substring(6, 6).Insert(2, "-").Insert(5, "-");
                    else if (label_det_idCardNo.Text.Length == 18) birth = label_det_idCardNo.Text.Substring(6, 8).Insert(4, "-").Insert(7, "-");
                    if (birth != txt_edit_birthday.Text)
                    {
                        MessageBox.Show(this, "所选生日与身份证号中的生日不一致!", "Message", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        return;
                    }
                }
            }
            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.Text.Trim(); // 民族
            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.Text.Trim();//采集地点
            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 = UserIrisDB.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.irisDataColl, FormMain.irisData);
            }

        }

        
        // 给详情页赋值
        private void setDetailValue(Person person, IrisDataColl irisDataColl, IrisData irisData)
        {
            // 基础信息
            label_det_name.Text = person.name;
            label_det_cardType.Text = Enum.GetName(typeof(cardType), Convert.ToInt16(person.cardType));
            label_det_country.Text = Enum.GetName(typeof(country), Convert.ToInt16(FormMain.personExt.column1));
            label_det_idCardNo.Text = person.idCardNo;
            label_det_nation.Text = person.nation;
            label_det_cerValid.Text = FormMain.personExt.column6;
            label_det_sex.Text = Enum.GetName(typeof(sex), Convert.ToInt16(person.sex));
            label_det_cerAuth.Text = FormMain.personExt.column2;
            label_det_age.Text = countAge(person.birthday).ToString();
            label_det_addr1.Text = FormMain.personExt.column3;
            if (null != person.birthday) label_det_birthday.Text = person.birthday.ToString("yyyy-MM-dd");
            label_det_addr2.Text = FormMain.personExt.column4;
            label_det_tel1.Text = irisDataColl.tel1;
            label_det_tel2.Text = irisDataColl.tel2;
            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 (FormMain.personExt.column7 != null && FormMain.personExt.column7 != "")
            {
                string base64 = FormMain.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);
            }


            // 采集信息
            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 = 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 = "是";

            // 临时关注
            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 = irisDataColl.devType;
            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 path = FormMain.eyeImagePath + irisData.imageL1;
            if (File.Exists(path)) pic_det_imageL1.Image = Image.FromFile(path);
            if (irisDataColl.qL != 0 && irisDataColl.qL.ToString()!="") label_det_qL.Text = "质量:" + irisDataColl.qL.ToString("0.0");
            //右眼
            path = FormMain.eyeImagePath + irisData.imageR1;
            if (File.Exists(path)) pic_det_imageR1.Image = Image.FromFile(path);
            if (irisDataColl.qR != 0 && irisDataColl.qR.ToString() != "") label_det_qR.Text = "质量:" + irisDataColl.qR.ToString("0.0");
           
        }

        // 选择是否“临时关注”
        private void radio_edit_flgFocusY_CheckedChanged(object sender, EventArgs e)
        {
            if (radio_edit_flgFocusY.Checked)
            {
                label37.Visible = true;
                label43.Visible = true;
                txt_edit_focusEndDate.Visible = true;
                picker_edit_focusEndDate.Visible = true;
                txt_edit_focusRemarks.Visible = true;
            }
            else if (radio_edit_flgFocusN.Checked)
            {
                label37.Visible = false;
                label43.Visible = false;
                txt_edit_focusEndDate.Visible = false;
                picker_edit_focusEndDate.Visible = false;
                txt_edit_focusRemarks.Visible = false;
            }
        }

        
        // 返回采集列表
        private void btn_back_Click(object sender, EventArgs e)
        {
            FormMain.insertService.setToFirst(FormMain.formMain.panel_Insert);
            FormMain.insertService.SetPanelControl(FormMain.formMain.panel_Insert, "collect");
        }


       
        
        //计算年龄
        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

        
      
      
       

       
       
     
    }
}