/// <summary>
        ///
        /// </summary>
        public void m_mthGeSampleStatSpec()
        {
            DataTable dtbResult;

            if (string.IsNullOrEmpty(m_objViewer.cbxGroup.Text) && m_objViewer.dgvCheckItem.Rows.Count < 2)
            {
                MessageBox.Show("请选择专业组或检验项目 !");
                return;
            }

            List <EnitySapleMedSpec> data = new List <EnitySapleMedSpec>();
            string groupId       = string.Empty;
            string enmergencyFlg = string.Empty;
            string patType       = string.Empty;
            string dteStart      = m_objViewer.dteStart.Text;
            string dteEnd        = m_objViewer.dteEnd.Text;
            string applyUnitId   = string.Empty;

            if (m_objViewer.dgvCheckItem.Rows.Count >= 2)
            {
                //applyUnitId = m_objViewer.dgvCheckItem.Rows[0].Cells[0].Value.ToString();

                for (int i = 0; i < m_objViewer.dgvCheckItem.Rows.Count - 1; i++)
                {
                    applyUnitId += "'" + m_objViewer.dgvCheckItem.Rows[i].Cells[0].Value.ToString() + "',";
                }

                applyUnitId = "(" + applyUnitId.TrimEnd(',') + ")";
            }

            string strDept = m_objViewer.DeptIdArr;

            if (m_objViewer.cboEmergency.Text.Trim() == "急诊项目")
            {
                enmergencyFlg = "1";
            }
            else if (m_objViewer.cboEmergency.Text.Trim() == "非急诊项目")
            {
                enmergencyFlg = "0";
            }

            if (m_objViewer.cboPatType.Text.Trim() == "住院")
            {
                patType = "1";
            }
            else if (m_objViewer.cboPatType.Text.Trim() == "门诊")
            {
                patType = "2";
            }

            if (m_objViewer.DeptIdArr == "'0000001'")
            {
                strDept = string.Empty;
            }

            foreach (var item in dicGroup)
            {
                if (item.Value == m_objViewer.cbxGroup.Text)
                {
                    groupId = item.Key;
                }
            }

            if (m_objViewer.dgvCheckItem.Rows.Count >= 2)
            {
                groupId = "";
            }

            clsPublic.PlayAvi("findFILE.avi", "正在查询项目信息,请稍候...");

            long lngRes = m_objManage.lngGetSampleMedSpec(out dtbResult, dteStart, dteEnd, groupId, applyUnitId, strDept, enmergencyFlg, patType);
            int  flg    = 0;

            if (lngRes > 0 && dtbResult.Rows.Count > 0)
            {
                //this.FillDWMicSensitive(dtbResult, strTempName);
                //m_objViewer.dgvdata.DataSource = dtbResult;

                foreach (DataRow dr in dtbResult.Rows)
                {
                    string deptName = dr["deptname"].ToString();
                    flg = 0;

                    if (m_objViewer.DeptIdArr == "'0000001'")
                    {
                        deptName = "全院";
                    }

                    for (int i = 0; i < data.Count; i++)
                    {
                        if (deptName == data[i].deptName)
                        {
                            if (dr["pretime"] != DBNull.Value)
                            {
                                if (data[i].preMaxTime < Convert.ToDecimal(dr["pretime"]) && Convert.ToDecimal(dr["pretime"]) > 0)
                                {
                                    data[i].preMaxTime = Convert.ToDecimal(dr["pretime"]);
                                }
                                if (data[i].preMinTime > Convert.ToDecimal(dr["pretime"]) && Convert.ToDecimal(dr["pretime"]) > 0)
                                {
                                    data[i].preMinTime = Convert.ToDecimal(dr["pretime"]);
                                }
                            }

                            if (dr["listime"] != DBNull.Value)
                            {
                                if (data[i].lisMaxTime < Convert.ToDecimal(dr["listime"]) && Convert.ToDecimal(dr["listime"]) > 0)
                                {
                                    data[i].lisMaxTime = Convert.ToDecimal(dr["listime"]);
                                }
                                if (data[i].lisMinTime > Convert.ToDecimal(dr["listime"]) && Convert.ToDecimal(dr["listime"]) > 0)
                                {
                                    data[i].lisMinTime = Convert.ToDecimal(dr["listime"]);
                                }
                            }

                            //data[i].sampleCount++;
                            data[i].BBS++;

                            flg = 1;
                        }
                    }

                    if (flg == 0)
                    {
                        EnitySapleMedSpec vo = new EnitySapleMedSpec();
                        if (dr["lisTime"] == DBNull.Value)
                        {
                            vo.lisMaxTime = 0;
                            vo.lisMinTime = 0;
                        }
                        else if (Convert.ToDecimal(dr["lisTime"]) > 0)
                        {
                            vo.lisMaxTime = Convert.ToDecimal(dr["lisTime"]);
                            vo.lisMinTime = Convert.ToDecimal(dr["lisTime"]);
                        }

                        if (dr["preTime"] == DBNull.Value)
                        {
                            vo.preMaxTime = 0;
                            vo.preMinTime = 0;
                        }
                        else if (Convert.ToDecimal(dr["preTime"]) > 0)
                        {
                            vo.preMaxTime = Convert.ToDecimal(dr["preTime"]);
                            vo.preMinTime = Convert.ToDecimal(dr["preTime"]);
                        }

                        vo.deptName = deptName;
                        vo.BBS      = 1;
                        data.Add(vo);
                    }
                }
            }
            else
            {
                MessageBox.Show("没有相关数据。");
                return;
            }

            for (int i = 0; i < data.Count; i++)
            {
                DataRow[] preDrr = null;
                DataRow[] lisDrr = null;

                if (m_objViewer.DeptIdArr == "'0000001'")
                {
                    preDrr = dtbResult.Select("pretime > 0", " pretime desc");
                    lisDrr = dtbResult.Select("listime > 0", " listime desc");
                }
                else
                {
                    preDrr = dtbResult.Select("deptname = '" + data[i].deptName + "' and pretime > 0", " pretime desc");
                    lisDrr = dtbResult.Select("deptname = '" + data[i].deptName + "' and listime > 0", " listime desc");
                }

                if (preDrr.Length > 0)
                {
                    int residPre   = preDrr.Length % 2;
                    int remaindPre = preDrr.Length / 2;

                    ////偶数
                    if (residPre == 0)
                    {
                        data[i].preMidTime = (Convert.ToDecimal(preDrr[remaindPre]["pretime"]) + Convert.ToDecimal(preDrr[remaindPre - 1]["pretime"])) / 2;
                    }
                    else
                    {
                        data[i].preMidTime = Convert.ToDecimal(preDrr[remaindPre]["pretime"]);
                    }
                }

                if (lisDrr.Length > 0)
                {
                    int residLis   = lisDrr.Length % 2;
                    int remaindLis = lisDrr.Length / 2;
                    ////偶数
                    if (residLis == 0)
                    {
                        data[i].lisMidTime = (Convert.ToDecimal(lisDrr[remaindLis]["listime"]) + Convert.ToDecimal(lisDrr[remaindLis - 1]["listime"])) / 2;
                    }
                    else
                    {
                        data[i].lisMidTime = Convert.ToDecimal(lisDrr[remaindLis]["listime"]);
                    }
                }
            }

            m_objViewer.dgvdata.DataSource = data;
            clsPublic.CloseAvi();
        }
Esempio n. 2
0
        /// <summary>
        ///
        /// </summary>
        public void m_mthGeSampleStatSpec2()
        {
            DataTable dtbResult;

            if (string.IsNullOrEmpty(m_objViewer.cbxGroup.Text) && m_objViewer.dgvCheckItem.Rows.Count < 2)
            {
                MessageBox.Show("请选择专业组或检验项目 !");
                return;
            }

            List <EnitySapleMedSpec> data = new List <EnitySapleMedSpec>();
            string groupId       = string.Empty;
            string enmergencyFlg = string.Empty;
            string patType       = string.Empty;
            string dteStart      = m_objViewer.dteStart.Text;
            string dteEnd        = m_objViewer.dteEnd.Text;
            string applyUnitId   = string.Empty;

            if (m_objViewer.dgvCheckItem.Rows.Count >= 2)
            {
                for (int i = 0; i < m_objViewer.dgvCheckItem.Rows.Count - 1; i++)
                {
                    applyUnitId += "'" + m_objViewer.dgvCheckItem.Rows[i].Cells[0].Value.ToString() + "',";
                }

                applyUnitId = "(" + applyUnitId.TrimEnd(',') + ")";
            }

            string strDept = m_objViewer.DeptIdArr;

            if (m_objViewer.cboEmergency.Text.Trim() == "急诊项目")
            {
                enmergencyFlg = "1";
            }
            else if (m_objViewer.cboEmergency.Text.Trim() == "非急诊项目")
            {
                enmergencyFlg = "0";
            }

            if (m_objViewer.cboPatType.Text.Trim() == "住院")
            {
                patType = "1";
            }
            else if (m_objViewer.cboPatType.Text.Trim() == "门诊")
            {
                patType = "2";
            }

            foreach (var item in dicGroup)
            {
                if (item.Value == m_objViewer.cbxGroup.Text)
                {
                    groupId = item.Key;
                }
            }

            if (m_objViewer.dgvCheckItem.Rows.Count >= 2)
            {
                groupId = "";
            }

            clsPublic.PlayAvi("findFILE.avi", "正在查询项目信息,请稍候...");

            try
            {
                long lngRes = m_objManage.lngGetSampleMedSpec(out dtbResult, dteStart, dteEnd, groupId, applyUnitId, strDept, enmergencyFlg, patType);
                int  flgKS  = 0;

                if (lngRes > 0 && dtbResult.Rows.Count > 0)
                {
                    foreach (DataRow dr in dtbResult.Rows)
                    {
                        flgKS = 0;
                        string deptName = dr["deptname"].ToString();
                        #region 科室
                        for (int i = 0; i < data.Count; i++)
                        {
                            if (deptName == data[i].deptName)
                            {
                                flgKS = 1;
                            }
                        }

                        if (flgKS == 0)
                        {
                            EnitySapleMedSpec vo = new EnitySapleMedSpec();
                            vo.deptName = deptName;

                            data.Add(vo);
                        }
                        #endregion
                    }

                    if (data.Count > 0)
                    {
                        #region 各科室
                        for (int i = 0; i < data.Count; i++)
                        {
                            DataRow[] drr = dtbResult.Select("deptname = '" + data[i].deptName + "'");

                            if (drr.Length > 0)
                            {
                                data[i].BBS = drr.Length;

                                for (int drI = 0; drI < drr.Length; drI++)
                                {
                                    DataRow dr = drr[drI];
                                    if (drI == 0)
                                    {
                                        if (dr["pretime"] != DBNull.Value)
                                        {
                                            data[i].preMaxTime = Convert.ToDecimal(dr["pretime"]);
                                            data[i].preMinTime = Convert.ToDecimal(dr["pretime"]);
                                        }

                                        if (dr["listime"] != DBNull.Value)
                                        {
                                            data[i].lisMinTime = Convert.ToDecimal(dr["listime"]);
                                            data[i].lisMaxTime = Convert.ToDecimal(dr["listime"]);
                                        }
                                    }

                                    if (dr["pretime"] != DBNull.Value)
                                    {
                                        if (data[i].preMaxTime < Convert.ToDecimal(dr["pretime"]) && Convert.ToDecimal(dr["pretime"]) > 0)
                                        {
                                            data[i].preMaxTime = Convert.ToDecimal(dr["pretime"]);
                                        }
                                        if (data[i].preMinTime > Convert.ToDecimal(dr["pretime"]) && Convert.ToDecimal(dr["pretime"]) > 0)
                                        {
                                            data[i].preMinTime = Convert.ToDecimal(dr["pretime"]);
                                        }
                                    }

                                    if (dr["listime"] != DBNull.Value)
                                    {
                                        if (data[i].lisMaxTime < Convert.ToDecimal(dr["listime"]) && Convert.ToDecimal(dr["listime"]) > 0)
                                        {
                                            data[i].lisMaxTime = Convert.ToDecimal(dr["listime"]);
                                        }
                                        if (data[i].lisMinTime > Convert.ToDecimal(dr["listime"]) && Convert.ToDecimal(dr["listime"]) > 0)
                                        {
                                            data[i].lisMinTime = Convert.ToDecimal(dr["listime"]);
                                        }
                                    }
                                }

                                DataRow[] preDrr = dtbResult.Select("deptname = '" + data[i].deptName + "' and pretime > 0", " pretime desc");
                                DataRow[] lisDrr = dtbResult.Select("deptname = '" + data[i].deptName + "' and listime > 0", " listime desc");


                                decimal preMidTime  = 0;
                                decimal preMidTime1 = 0;

                                if (preDrr.Length > 0)
                                {
                                    int residPre   = preDrr.Length % 2;
                                    int remaindPre = preDrr.Length / 2;
                                    if (preDrr[remaindPre]["pretime"] == DBNull.Value)
                                    {
                                        preMidTime = 0;
                                    }
                                    else
                                    {
                                        preMidTime = Convert.ToDecimal(preDrr[remaindPre]["pretime"]);
                                    }

                                    if (remaindPre > 0)
                                    {
                                        if (preDrr[remaindPre - 1]["pretime"] == DBNull.Value)
                                        {
                                            preMidTime1 = 0;
                                        }
                                        else
                                        {
                                            preMidTime1 = Convert.ToDecimal(preDrr[remaindPre - 1]["pretime"]);
                                        }
                                    }

                                    ////偶数
                                    if (residPre == 0)
                                    {
                                        data[i].preMidTime = (preMidTime + preMidTime1) / 2;
                                    }
                                    else
                                    {
                                        data[i].preMidTime = preMidTime;
                                    }
                                }

                                decimal lisMidTime  = 0;
                                decimal lisMidTime1 = 0;

                                if (lisDrr.Length > 0)
                                {
                                    int residLis   = lisDrr.Length % 2;
                                    int remaindLis = lisDrr.Length / 2;

                                    if (lisDrr[remaindLis]["listime"] == DBNull.Value)
                                    {
                                        lisMidTime = 0;
                                    }
                                    else
                                    {
                                        lisMidTime = Convert.ToDecimal(lisDrr[remaindLis]["listime"]);
                                    }

                                    if (remaindLis > 0)
                                    {
                                        if (lisDrr[remaindLis - 1]["listime"] == DBNull.Value)
                                        {
                                            lisMidTime1 = 0;
                                        }
                                        else
                                        {
                                            lisMidTime1 = Convert.ToDecimal(lisDrr[remaindLis - 1]["listime"]);
                                        }
                                    }

                                    ////偶数
                                    if (residLis == 0)
                                    {
                                        data[i].lisMidTime = (lisMidTime + lisMidTime1) / 2;
                                    }
                                    else
                                    {
                                        data[i].lisMidTime = lisMidTime;
                                    }
                                }
                            }
                        }
                        #endregion

                        #region 全院
                        EnitySapleMedSpec voAll = new EnitySapleMedSpec();
                        voAll.deptName   = "全院";
                        voAll.BBS        = dtbResult.Rows.Count;
                        voAll.preMaxTime = 0;
                        voAll.preMinTime = 99999;
                        voAll.lisMaxTime = 0;
                        voAll.lisMinTime = 99999;
                        data.Add(voAll);

                        foreach (DataRow dr in dtbResult.Rows)
                        {
                            if (dr["pretime"] != DBNull.Value)
                            {
                                if (voAll.preMaxTime < Convert.ToDecimal(dr["pretime"]) && Convert.ToDecimal(dr["pretime"]) > 0)
                                {
                                    voAll.preMaxTime = Convert.ToDecimal(dr["pretime"]);
                                }
                                if (voAll.preMinTime > Convert.ToDecimal(dr["pretime"]) && Convert.ToDecimal(dr["pretime"]) > 0)
                                {
                                    voAll.preMinTime = Convert.ToDecimal(dr["pretime"]);
                                }
                            }

                            if (dr["listime"] != DBNull.Value)
                            {
                                if (voAll.lisMaxTime < Convert.ToDecimal(dr["listime"]) && Convert.ToDecimal(dr["listime"]) > 0)
                                {
                                    voAll.lisMaxTime = Convert.ToDecimal(dr["listime"]);
                                }
                                if (voAll.lisMinTime > Convert.ToDecimal(dr["listime"]) && Convert.ToDecimal(dr["listime"]) > 0)
                                {
                                    voAll.lisMinTime = Convert.ToDecimal(dr["listime"]);
                                }
                            }

                            DataRow[] preDrr = dtbResult.Select("pretime > 0", " pretime desc");
                            DataRow[] lisDrr = dtbResult.Select("listime > 0", " listime desc");

                            int     residPre    = preDrr.Length % 2;
                            int     remaindPre  = preDrr.Length / 2;
                            decimal preMidTime  = 0;
                            decimal preMidTime1 = 0;

                            if (preDrr[remaindPre]["pretime"] == DBNull.Value)
                            {
                                preMidTime = 0;
                            }
                            else
                            {
                                preMidTime = Convert.ToDecimal(preDrr[remaindPre]["pretime"]);
                            }

                            if (remaindPre > 0)
                            {
                                if (preDrr[remaindPre - 1]["pretime"] == DBNull.Value)
                                {
                                    preMidTime1 = 0;
                                }
                                else
                                {
                                    preMidTime1 = Convert.ToDecimal(preDrr[remaindPre - 1]["pretime"]);
                                }
                            }

                            ////偶数
                            if (residPre == 0)
                            {
                                voAll.preMidTime = (preMidTime + preMidTime1) / 2;
                            }
                            else
                            {
                                voAll.preMidTime = preMidTime;
                            }

                            int     residLis    = lisDrr.Length % 2;
                            int     remaindLis  = lisDrr.Length / 2;
                            decimal lisMidTime  = 0;
                            decimal lisMidTime1 = 0;

                            if (lisDrr[remaindLis]["listime"] == DBNull.Value)
                            {
                                lisMidTime = 0;
                            }
                            else
                            {
                                lisMidTime = Convert.ToDecimal(lisDrr[remaindPre]["listime"]);
                            }

                            if (remaindLis > 0)
                            {
                                if (lisDrr[remaindLis - 1]["listime"] == DBNull.Value)
                                {
                                    lisMidTime1 = 0;
                                }
                                else
                                {
                                    lisMidTime1 = Convert.ToDecimal(lisDrr[remaindLis - 1]["listime"]);
                                }
                            }


                            ////偶数
                            if (residLis == 0)
                            {
                                voAll.lisMidTime = (lisMidTime + lisMidTime1) / 2;
                            }
                            else
                            {
                                voAll.lisMidTime = lisMidTime;
                            }
                        }
                        #endregion
                    }
                }

                else
                {
                    MessageBox.Show("没有相关数据。");
                    return;
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString());
            }
            finally
            {
                clsPublic.CloseAvi();
            }


            m_objViewer.dgvdata.DataSource = data;
        }